diff --git a/.prettierignore b/.prettierignore index 8a8350b..04dbfae 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,6 +5,6 @@ lib # Autogenerated stuff src/types src/model/generated -db/migrations/*.js +db/migrations/*-Data.js schema.graphql -/db/export \ No newline at end of file +/db/export diff --git a/db/migrations/1702466370902-Operator.js b/db/migrations/1702466370902-Operator.js deleted file mode 100644 index dd418b2..0000000 --- a/db/migrations/1702466370902-Operator.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = class Operator1702466370902 { - name = 'Operator1702466370902' - - async up(db) { - // Create pg_stat_statements extension for analyzing query stats - await db.query(`CREATE EXTENSION pg_stat_statements;`) - } - - async down(db) { - await db.query(`DROP EXTENSION pg_stat_statements;`) - } -} - diff --git a/db/migrations/1702466795502-Data.js b/db/migrations/1705345480233-Data.js similarity index 97% rename from db/migrations/1702466795502-Data.js rename to db/migrations/1705345480233-Data.js index 6802147..0a91f36 100644 --- a/db/migrations/1702466795502-Data.js +++ b/db/migrations/1705345480233-Data.js @@ -1,8 +1,9 @@ -module.exports = class Data1702466795502 { - name = 'Data1702466795502' +module.exports = class Data1705345480233 { + name = 'Data1705345480233' async up(db) { await db.query(`CREATE TABLE "next_entity_id" ("entity_name" character varying NOT NULL, "next_id" bigint NOT NULL, CONSTRAINT "PK_09a3b40db622a65096e7344d7ae" PRIMARY KEY ("entity_name"))`) + await db.query(`CREATE TABLE "squid_version" ("id" character varying NOT NULL, "version" text NOT NULL, CONSTRAINT "PK_97d8a06dfa602575b79a623734d" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "event" ("id" character varying NOT NULL, "in_block" integer NOT NULL, "in_extrinsic" text, "index_in_block" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "data" jsonb NOT NULL, CONSTRAINT "PK_30c2f3bbaf6d34a55f8ae6e4614" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_8f3f220c4e717207d841d4e6d4" ON "event" ("in_extrinsic") `) await db.query(`CREATE TABLE "storage_bucket" ("id" character varying NOT NULL, "operator_status" jsonb NOT NULL, "accepting_new_bags" boolean NOT NULL, "data_objects_size_limit" numeric NOT NULL, "data_object_count_limit" numeric NOT NULL, "data_objects_count" numeric NOT NULL, "data_objects_size" numeric NOT NULL, CONSTRAINT "PK_97cd0c3fe7f51e34216822e5f91" PRIMARY KEY ("id"))`) @@ -44,6 +45,7 @@ module.exports = class Data1702466795502 { async down(db) { await db.query(`DROP TABLE "next_entity_id"`) + await db.query(`DROP TABLE "squid_version"`) await db.query(`DROP TABLE "event"`) await db.query(`DROP INDEX "public"."IDX_8f3f220c4e717207d841d4e6d4"`) await db.query(`DROP TABLE "storage_bucket"`) diff --git a/db/migrations/2100000000000-Indexes.js b/db/migrations/2100000000000-Indexes.js index d218ef4..64ccd8c 100644 --- a/db/migrations/2100000000000-Indexes.js +++ b/db/migrations/2100000000000-Indexes.js @@ -1,9 +1,11 @@ -module.exports = class Indexes2000000000000 { - name = 'Indexes2000000000000' +module.exports = class Indexes2100000000000 { + name = 'Indexes2100000000000' async up(db) { await db.query(`CREATE INDEX "events_type" ON "event" USING BTREE (("data"->>'isTypeOf'));`) - await db.query(`CREATE INDEX "events_dataObjectId" ON "event" USING BTREE (("data"->>'dataObjectId'));`) + await db.query( + `CREATE INDEX "events_dataObjectId" ON "event" USING BTREE (("data"->>'dataObjectId'));` + ) } async down(db) { diff --git a/db/migrations/2200000000000-Operator.js b/db/migrations/2200000000000-Operator.js new file mode 100644 index 0000000..73c470d --- /dev/null +++ b/db/migrations/2200000000000-Operator.js @@ -0,0 +1,29 @@ +const fs = require('fs') +const path = require('path') + +module.exports = class Operator2200000000000 { + name = 'Operator2200000000000' + + async up(db) { + // Path to your package.json file + const packageJsonPath = path.join(__dirname, '../../package.json') + + // Read the package.json file synchronously + const data = fs.readFileSync(packageJsonPath, 'utf8') + + // Parse the JSON data + const packageJson = JSON.parse(data) + + await db.query( + `INSERT INTO "squid_version" ("id", "version") + VALUES ('${packageJson.name}' ,'${packageJson.version}');` + ) + + // Create pg_stat_statements extension for analyzing query stats + await db.query(`CREATE EXTENSION pg_stat_statements;`) + } + + async down(db) { + await db.query(`DROP EXTENSION pg_stat_statements;`) + } +} diff --git a/schema/misc.graphql b/schema/misc.graphql new file mode 100644 index 0000000..8218cd4 --- /dev/null +++ b/schema/misc.graphql @@ -0,0 +1,4 @@ +type SquidVersion @entity { + "Current version of the storage squid package" + version: String! +}