Skip to content

Commit

Permalink
fix: DB migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
simonas-notcat committed Apr 29, 2020
1 parent 2577983 commit 14b578e
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 33 deletions.
29 changes: 29 additions & 0 deletions packages/daf-cli/src/migrations/SecretBox1588075773000.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { MigrationInterface, QueryRunner } from 'typeorm'
import { Key } from 'daf-core'
import { SecretBox } from 'daf-libsodium'

export class SecretBox1588075773000 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
const exists = await queryRunner.hasTable('key')
if (exists) {
const secretBox = new SecretBox(process.env.DAF_SECRET_KEY)
const keys = await queryRunner.connection.getRepository(Key).find()
for (const key of keys) {
key.privateKeyHex = await secretBox.encrypt(key.privateKeyHex)
await key.save()
}
}
}

async down(queryRunner: QueryRunner): Promise<void> {
const exists = await queryRunner.hasTable('key')
if (exists) {
const secretBox = new SecretBox(process.env.DAF_SECRET_KEY)
const keys = await queryRunner.connection.getRepository(Key).find()
for (const key of keys) {
key.privateKeyHex = await secretBox.decrypt(key.privateKeyHex)
await key.save()
}
}
}
}
3 changes: 3 additions & 0 deletions packages/daf-cli/src/migrations/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { SecretBox1588075773000 } from './SecretBox1588075773000'

export const migrations = [SecretBox1588075773000]
41 changes: 19 additions & 22 deletions packages/daf-cli/src/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { TrustGraphActionHandler, TrustGraphServiceController } from 'daf-trust-
import { DIDCommActionHandler, DIDCommMessageHandler } from 'daf-did-comm'
import { UrlMessageHandler } from 'daf-url'
import { createConnection } from 'typeorm'
import { migrations } from './migrations'
const fs = require('fs')
import ws from 'ws'
import { config } from 'dotenv'
Expand All @@ -20,26 +21,23 @@ const defaultPath = process.env.HOME + '/.daf/'
const envFile = defaultPath + '.env'

const writeDefaultConfig = async () => {

if (!fs.existsSync(defaultPath)) {
fs.mkdirSync(defaultPath)
}

if (!fs.existsSync(envFile)) {
console.log('Configuration file does not exist. Creating: ' + envFile)
let env = 'DAF_DATA_STORE=' + defaultPath + 'database-v3.sqlite3'
env += '\nDAF_DEBUG_DB=false'
env += '\nDAF_SECRET_KEY=' + await SecretBox.createSecretKey()
env += '\nDAF_INFURA_ID=5ffc47f65c4042ce847ef66a3fa70d4c'
env += '\n#DEBUG=daf:*'
let env = 'DAF_DATA_STORE=' + defaultPath + 'database-v2.sqlite'
env += '\nDAF_DEBUG_DB=false'
env += '\nDAF_SECRET_KEY=' + (await SecretBox.createSecretKey())
env += '\nDAF_INFURA_ID=5ffc47f65c4042ce847ef66a3fa70d4c'
env += '\n#DEBUG=daf:*'

fs.writeFileSync(envFile, env)
}

}

const setupAgent = async (): Promise<Daf.Agent> => {

await writeDefaultConfig()
config({ path: envFile })

Expand All @@ -49,30 +47,29 @@ const setupAgent = async (): Promise<Daf.Agent> => {
let didResolver: Daf.Resolver = new DafResolver({
infuraProjectId,
})

if (process.env.DAF_UNIVERSAL_RESOLVER_URL) {
didResolver = new DafUniversalResolver({
url: process.env.DAF_UNIVERSAL_RESOLVER_URL,
})
}

if (process.env.DAF_TG_URI) TrustGraphServiceController.defaultUri = process.env.DAF_TG_URI
if (process.env.DAF_TG_WSURI) TrustGraphServiceController.defaultWsUri = process.env.DAF_TG_WSURI
TrustGraphServiceController.webSocketImpl = ws

const migrationsRun = fs.existsSync(process.env.DAF_DATA_STORE)
const synchronize = !migrationsRun

const synchronize = !fs.existsSync(process.env.DAF_DATA_STORE)

const dbConnection = createConnection({
type: 'sqlite',
migrationsRun,
migrationsRun: true,
synchronize,
database: process.env.DAF_DATA_STORE,
logging: process.env.DAF_DEBUG_DB === 'true' ? true : false,
entities: [...Daf.Entities],
migrations: [...Daf.migrations],
migrations: [...Daf.migrations, ...migrations],
})

const identityProviders = [
new EthrDid.IdentityProvider({
identityStore: new Daf.IdentityStore('rinkeby-ethr', dbConnection),
Expand All @@ -82,20 +79,20 @@ const setupAgent = async (): Promise<Daf.Agent> => {
}),
]
const serviceControllers = [TrustGraphServiceController]

const messageHandler = new UrlMessageHandler()
messageHandler
.setNext(new DIDCommMessageHandler())
.setNext(new JwtMessageHandler())
.setNext(new W3cMessageHandler())
.setNext(new SdrMessageHandler())

const actionHandler = new DIDCommActionHandler()
actionHandler
.setNext(new TrustGraphActionHandler())
.setNext(new W3cActionHandler())
.setNext(new SdrActionHandler())

const agent = new Daf.Agent({
dbConnection,
identityProviders,
Expand All @@ -107,4 +104,4 @@ const setupAgent = async (): Promise<Daf.Agent> => {
return agent
}

export const agent = setupAgent()
export const agent = setupAgent()
24 changes: 16 additions & 8 deletions packages/daf-core/src/migrations/CredentialStatus1587985317000.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
import {MigrationInterface, QueryRunner } from "typeorm";
import { MigrationInterface, QueryRunner } from 'typeorm'

export class CredentialStatus1587985317000 implements MigrationInterface {

async up(queryRunner: QueryRunner): Promise<void> {
if (!queryRunner.hasColumn('credential', 'credentialStatus')) {
await queryRunner.query('ALTER TABLE credential ADD credentialStatus TEXT NULL')
const tableExists = await queryRunner.hasTable('credential')
if (tableExists) {
const columnExists = await queryRunner.hasColumn('credential', 'credentialStatus')
if (!columnExists) {
await queryRunner.query('ALTER TABLE credential ADD credentialStatus TEXT NULL')
}
}
}

async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('ALTER TABLE credential DROP credentialStatus')
const tableExists = await queryRunner.hasTable('credential')
if (tableExists) {
const columnExists = await queryRunner.hasColumn('credential', 'credentialStatus')
if (columnExists) {
await queryRunner.query('ALTER TABLE credential DROP credentialStatus')
}
}
}

}
}
4 changes: 1 addition & 3 deletions packages/daf-core/src/migrations/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { CredentialStatus1587985317000 } from './CredentialStatus1587985317000'

export const migrations = [
CredentialStatus1587985317000
]
export const migrations = [CredentialStatus1587985317000]

0 comments on commit 14b578e

Please sign in to comment.