ponder 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4369,12 +4369,7 @@ var createDatabase = ({
4369
4369
  (tableName) => tableName.sql
4370
4370
  )
4371
4371
  };
4372
- if (previousApp === void 0) {
4373
- await tx.insertInto("_ponder_meta").values({ key: "status", value: null }).execute();
4374
- await tx.insertInto("_ponder_meta").values({
4375
- key: "app",
4376
- value: newApp
4377
- }).execute();
4372
+ const createEnums = async () => {
4378
4373
  for (let i = 0; i < schemaBuild.statements.enums.sql.length; i++) {
4379
4374
  await sql2.raw(schemaBuild.statements.enums.sql[i]).execute(tx).catch((_error) => {
4380
4375
  const error = _error;
@@ -4387,6 +4382,8 @@ var createDatabase = ({
4387
4382
  throw e;
4388
4383
  });
4389
4384
  }
4385
+ };
4386
+ const createTables = async () => {
4390
4387
  for (let i = 0; i < schemaBuild.statements.tables.sql.length; i++) {
4391
4388
  await sql2.raw(schemaBuild.statements.tables.sql[i]).execute(tx).catch((_error) => {
4392
4389
  const error = _error;
@@ -4399,6 +4396,26 @@ var createDatabase = ({
4399
4396
  throw e;
4400
4397
  });
4401
4398
  }
4399
+ };
4400
+ const dropTables = async () => {
4401
+ for (const tableName of getTableNames(schemaBuild.schema)) {
4402
+ await tx.schema.dropTable(tableName.sql).cascade().ifExists().execute();
4403
+ await tx.schema.dropTable(tableName.reorg).cascade().ifExists().execute();
4404
+ }
4405
+ };
4406
+ const dropEnums = async () => {
4407
+ for (const enumName of schemaBuild.statements.enums.json) {
4408
+ await tx.schema.dropType(enumName.name).ifExists().execute();
4409
+ }
4410
+ };
4411
+ if (previousApp === void 0) {
4412
+ await tx.insertInto("_ponder_meta").values({ key: "status", value: null }).execute();
4413
+ await tx.insertInto("_ponder_meta").values({
4414
+ key: "app",
4415
+ value: newApp
4416
+ }).execute();
4417
+ await createEnums();
4418
+ await createTables();
4402
4419
  common.logger.info({
4403
4420
  service: "database",
4404
4421
  msg: `Created tables [${newApp.table_names.join(", ")}]`
@@ -4410,37 +4427,11 @@ var createDatabase = ({
4410
4427
  }
4411
4428
  if (previousApp.is_dev === 1 || process.env.PONDER_EXPERIMENTAL_DB === "platform" && previousApp.build_id !== newApp.build_id || process.env.PONDER_EXPERIMENTAL_DB === "platform" && previousApp.checkpoint === encodeCheckpoint(zeroCheckpoint)) {
4412
4429
  await tx.updateTable("_ponder_meta").set({ value: null }).where("key", "=", "status").execute();
4413
- await tx.updateTable("_ponder_meta").set({
4414
- value: newApp
4415
- }).where("key", "=", "app").execute();
4416
- for (const tableName of getTableNames(schemaBuild.schema)) {
4417
- await tx.schema.dropTable(tableName.sql).cascade().ifExists().execute();
4418
- await tx.schema.dropTable(tableName.reorg).cascade().ifExists().execute();
4419
- }
4420
- for (let i = 0; i < schemaBuild.statements.enums.sql.length; i++) {
4421
- await sql2.raw(schemaBuild.statements.enums.sql[i]).execute(tx).catch((_error) => {
4422
- const error = _error;
4423
- if (!error.message.includes("already exists"))
4424
- throw error;
4425
- const e = new NonRetryableError(
4426
- `Unable to create enum '${preBuild.namespace}'.'${schemaBuild.statements.enums.json[i].name}' because an enum with that name already exists.`
4427
- );
4428
- e.stack = void 0;
4429
- throw e;
4430
- });
4431
- }
4432
- for (let i = 0; i < schemaBuild.statements.tables.sql.length; i++) {
4433
- await sql2.raw(schemaBuild.statements.tables.sql[i]).execute(tx).catch((_error) => {
4434
- const error = _error;
4435
- if (!error.message.includes("already exists"))
4436
- throw error;
4437
- const e = new NonRetryableError(
4438
- `Unable to create table '${preBuild.namespace}'.'${schemaBuild.statements.tables.json[i].tableName}' because a table with that name already exists.`
4439
- );
4440
- e.stack = void 0;
4441
- throw e;
4442
- });
4443
- }
4430
+ await tx.updateTable("_ponder_meta").set({ value: newApp }).where("key", "=", "app").execute();
4431
+ await dropTables();
4432
+ await dropEnums();
4433
+ await createEnums();
4434
+ await createTables();
4444
4435
  common.logger.info({
4445
4436
  service: "database",
4446
4437
  msg: `Created tables [${newApp.table_names.join(", ")}]`
@@ -4450,7 +4441,7 @@ var createDatabase = ({
4450
4441
  checkpoint: encodeCheckpoint(zeroCheckpoint)
4451
4442
  };
4452
4443
  }
4453
- if (common.options.command === "dev" || previousApp.build_id !== newApp.build_id || previousApp.checkpoint === encodeCheckpoint(zeroCheckpoint)) {
4444
+ if (common.options.command === "dev" || previousApp.build_id !== newApp.build_id) {
4454
4445
  const error = new NonRetryableError(
4455
4446
  `Schema '${preBuild.namespace}' was previously used by a different Ponder app. Drop the schema first, or use a different schema. Read more: https://ponder.sh/docs/getting-started/database#database-schema`
4456
4447
  );
@@ -4464,12 +4455,26 @@ var createDatabase = ({
4464
4455
  expiry: previousApp.heartbeat_at + common.options.databaseHeartbeatTimeout
4465
4456
  };
4466
4457
  }
4458
+ if (previousApp.checkpoint === encodeCheckpoint(zeroCheckpoint)) {
4459
+ await tx.updateTable("_ponder_meta").set({ value: null }).where("key", "=", "status").execute();
4460
+ await tx.updateTable("_ponder_meta").set({ value: newApp }).where("key", "=", "app").execute();
4461
+ await dropTables();
4462
+ await dropEnums();
4463
+ await createEnums();
4464
+ await createTables();
4465
+ common.logger.info({
4466
+ service: "database",
4467
+ msg: `Created tables [${newApp.table_names.join(", ")}]`
4468
+ });
4469
+ return {
4470
+ status: "success",
4471
+ checkpoint: encodeCheckpoint(zeroCheckpoint)
4472
+ };
4473
+ }
4467
4474
  const checkpoint = previousApp.checkpoint;
4468
4475
  newApp.checkpoint = checkpoint;
4469
4476
  await tx.updateTable("_ponder_meta").set({ value: null }).where("key", "=", "status").execute();
4470
- await tx.updateTable("_ponder_meta").set({
4471
- value: newApp
4472
- }).where("key", "=", "app").execute();
4477
+ await tx.updateTable("_ponder_meta").set({ value: newApp }).where("key", "=", "app").execute();
4473
4478
  common.logger.info({
4474
4479
  service: "database",
4475
4480
  msg: `Detected crash recovery for build '${buildId}' in schema '${preBuild.namespace}' last active ${formatEta(Date.now() - previousApp.heartbeat_at)} ago`