@sphereon/ssi-sdk.data-store
Version:
65 lines (61 loc) • 3.81 kB
text/typescript
import { MigrationInterface, QueryRunner } from 'typeorm'
export class CreateStatusList1693866470002 implements MigrationInterface {
name = 'CreateStatusList1693866470002'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "StatusListEntry"
(
"statusListId" varchar NOT NULL,
"statusListIndex" integer NOT NULL,
"credentialId" varchar,
"credentialHash" varchar(128),
"correlationId" varchar(255),
"value" varchar(50),
PRIMARY KEY ("statusListId", "statusListIndex")
)`,
)
await queryRunner.query(
`CREATE TABLE "StatusList"
(
"id" varchar PRIMARY KEY NOT NULL,
"correlationId" varchar NOT NULL,
"length" integer NOT NULL,
"issuer" text NOT NULL,
"type" varchar CHECK ( "type" IN ('StatusList2021') ) NOT NULL DEFAULT ('StatusList2021'),
"driverType" varchar CHECK ( "driverType" IN ('agent_typeorm', 'agent_kv_store', 'github',
'agent_filesystem') ) NOT NULL DEFAULT ('agent_typeorm'),
"credentialIdMode" varchar CHECK ( "credentialIdMode" IN ('ISSUANCE', 'PERSISTENCE', 'NEVER') ) NOT NULL DEFAULT ('ISSUANCE'),
"proofFormat" varchar CHECK ( "proofFormat" IN ('lds', 'jwt') ) NOT NULL DEFAULT ('lds'),
"indexingDirection" varchar CHECK ( "indexingDirection" IN ('rightToLeft') ) NOT NULL DEFAULT ('rightToLeft'),
"statusPurpose" varchar NOT NULL DEFAULT ('revocation'),
"statusListCredential" text,
CONSTRAINT "UQ_correlationId" UNIQUE ("correlationId")
)`,
)
await queryRunner.query(
`CREATE TABLE "temporary_StatusListEntry"
(
"statusListId" varchar NOT NULL,
"statusListIndex" integer NOT NULL,
"credentialId" varchar,
"credentialHash" varchar(128),
"correlationId" varchar(255),
"value" varchar(50),
CONSTRAINT "FK_statusListEntry_statusListId" FOREIGN KEY ("statusListId") REFERENCES "StatusList" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,
PRIMARY KEY ("statusListId", "statusListIndex")
)`,
)
await queryRunner.query(
`INSERT INTO "temporary_StatusListEntry"("statusListId", "statusListIndex", "credentialId",
"credentialHash", "correlationId", "value")
SELECT "statusListId", "statusListIndex", "credentialId", "credentialHash", "correlationId", "value"
FROM "StatusListEntry"`,
)
await queryRunner.query(`DROP TABLE "StatusListEntry"`)
await queryRunner.query(`ALTER TABLE "temporary_StatusListEntry" RENAME TO "StatusListEntry"`)
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP TABLE "StatusListEntry"`)
await queryRunner.query(`DROP TABLE "StatusList"`)
}
}