@oliasoft-open-source/node-json-migrator 4.0.0-beta-1 → 4.1.0-beta-1

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.
package/dist/index.cjs CHANGED
@@ -9036,22 +9036,22 @@ const getRecordList = async (db, entity, entityTableName, entityColumnNames, lat
9036
9036
  const query = `
9037
9037
  SELECT
9038
9038
  $(entityIdColumn:name) AS id,
9039
- name,
9039
+ $(entityNameColumn:name) AS name,
9040
9040
  $(entityCreatedColumn:name) AS created,
9041
- version
9041
+ $(entityVersionColumn:name) AS version
9042
9042
  FROM $(entityTable:name)
9043
9043
  WHERE (
9044
- version IS NULL OR version = ''
9044
+ $(entityVersionColumn:name) IS NULL OR $(entityVersionColumn:name) = ''
9045
9045
  OR (
9046
- version <> $(latestVersion)
9046
+ $(entityVersionColumn:name) <> $(latestVersion)
9047
9047
  AND (
9048
9048
  SELECT
9049
9049
  CASE
9050
9050
  WHEN IS_JSON(plan) THEN JSON_ARRAY_LENGTH(plan::json)
9051
- ELSE 0
9051
+ ELSE 0
9052
9052
  END AS length
9053
9053
  FROM $(entityVersionsTable:name)
9054
- WHERE $(entityVersionsTable:name).version = version
9054
+ WHERE $(entityVersionsTable:name).version = $(entityVersionColumn:name)
9055
9055
  LIMIT 1
9056
9056
  )::integer <= $(latestVersionPlanLength)
9057
9057
  )
@@ -9061,7 +9061,9 @@ const getRecordList = async (db, entity, entityTableName, entityColumnNames, lat
9061
9061
  entityTable: entityTableName,
9062
9062
  entityVersionsTable: `${entity}_versions`,
9063
9063
  entityIdColumn: entityColumnNames.id,
9064
+ entityNameColumn: entityColumnNames.name,
9064
9065
  entityCreatedColumn: entityColumnNames.created,
9066
+ entityVersionColumn: entityColumnNames.version,
9065
9067
  latestVersion,
9066
9068
  latestVersionPlanLength
9067
9069
  };
@@ -9084,18 +9086,22 @@ const updateRecord = async (t, entityTableName, entityColumnNames, entityId, cur
9084
9086
  const useEtag = typeof etag === "number";
9085
9087
  const query = `
9086
9088
  UPDATE $(entityTable:name)
9087
- SET data = $(nextData),
9088
- version = $(nextVersion)
9089
- ${useEtag ? ", etag = etag + 1" : ""}
9090
- WHERE $(entityIdColumn:name) = $(entityId)
9091
- AND version = $(currentVersion)
9092
- ${useEtag ? "AND etag = $(etag)" : ""}
9089
+ SET
9090
+ $(payloadColumn:name) = $(nextData),
9091
+ $(versionColumn:name) = $(nextVersion)
9092
+ ${useEtag ? ", $(etagColumn:name) = $(etagColumn:name) + 1" : ""}
9093
+ WHERE $(idColumn:name) = $(entityId)
9094
+ AND $(versionColumn:name) = $(currentVersion)
9095
+ ${useEtag ? "AND $(etagColumn:name) = $(etag)" : ""}
9093
9096
  RETURNING *
9094
9097
  `;
9095
9098
  const params = {
9096
9099
  entityTable: entityTableName,
9100
+ idColumn: entityColumnNames.id,
9101
+ payloadColumn: entityColumnNames.payload,
9102
+ versionColumn: entityColumnNames.version,
9103
+ etagColumn: entityColumnNames.etag,
9097
9104
  entityId,
9098
- entityIdColumn: entityColumnNames.id,
9099
9105
  currentVersion,
9100
9106
  nextData,
9101
9107
  nextVersion,
@@ -9681,14 +9687,18 @@ const migrateRecord = async ({
9681
9687
  config.entityColumnNames,
9682
9688
  record.id
9683
9689
  );
9684
- const { data, etag, version: currentVersion } = currentRecord;
9690
+ const {
9691
+ [config.entityColumnNames.payload]: payload,
9692
+ [config.entityColumnNames.etag]: etag,
9693
+ [config.entityColumnNames.version]: currentVersion
9694
+ } = currentRecord;
9685
9695
  await beforeMigrateRecord({
9686
9696
  currentRecord,
9687
9697
  transaction,
9688
9698
  dry
9689
9699
  });
9690
9700
  const { nextPayload: nextData, nextVersion } = await migrate({
9691
- payload: data,
9701
+ payload,
9692
9702
  config: {
9693
9703
  ...config,
9694
9704
  version: currentVersion,
@@ -9722,9 +9732,9 @@ const migrateRecord = async ({
9722
9732
  return null;
9723
9733
  } catch (error) {
9724
9734
  const migrationErrorPayload = {
9725
- id: record.id,
9726
- name: record.name,
9727
- created: record.created,
9735
+ [config.entityColumnNames.id]: record.id,
9736
+ [config.entityColumnNames.name]: record.name,
9737
+ [config.entityColumnNames.created]: record.created,
9728
9738
  error,
9729
9739
  stackTrace: error.stack
9730
9740
  };
package/dist/index.d.cts CHANGED
@@ -19,13 +19,22 @@ type TMigration = {
19
19
  };
20
20
  type TEntityColumnNames = {
21
21
  id: string;
22
- created: string;
23
- };
24
- type TRecord<T extends TEntityColumnNames = TEntityColumnNames> = {
25
22
  name: string;
23
+ payload: string;
24
+ etag?: string;
26
25
  version: string;
27
- } & {
26
+ created: string;
27
+ };
28
+ type TRecord<T extends TEntityColumnNames = TEntityColumnNames, TData = unknown> = {
28
29
  [K in T['id']]: number | string;
30
+ } & {
31
+ [K in T['name']]: string;
32
+ } & {
33
+ [K in T['payload']]: TData;
34
+ } & (T['etag'] extends string ? {
35
+ [K in T['etag']]?: string;
36
+ } : Record<never, never>) & {
37
+ [K in T['version']]: string;
29
38
  } & {
30
39
  [K in T['created']]: string | Date;
31
40
  };
package/dist/index.d.mts CHANGED
@@ -19,13 +19,22 @@ type TMigration = {
19
19
  };
20
20
  type TEntityColumnNames = {
21
21
  id: string;
22
- created: string;
23
- };
24
- type TRecord<T extends TEntityColumnNames = TEntityColumnNames> = {
25
22
  name: string;
23
+ payload: string;
24
+ etag?: string;
26
25
  version: string;
27
- } & {
26
+ created: string;
27
+ };
28
+ type TRecord<T extends TEntityColumnNames = TEntityColumnNames, TData = unknown> = {
28
29
  [K in T['id']]: number | string;
30
+ } & {
31
+ [K in T['name']]: string;
32
+ } & {
33
+ [K in T['payload']]: TData;
34
+ } & (T['etag'] extends string ? {
35
+ [K in T['etag']]?: string;
36
+ } : Record<never, never>) & {
37
+ [K in T['version']]: string;
29
38
  } & {
30
39
  [K in T['created']]: string | Date;
31
40
  };
package/dist/index.mjs CHANGED
@@ -9015,22 +9015,22 @@ const getRecordList = async (db, entity, entityTableName, entityColumnNames, lat
9015
9015
  const query = `
9016
9016
  SELECT
9017
9017
  $(entityIdColumn:name) AS id,
9018
- name,
9018
+ $(entityNameColumn:name) AS name,
9019
9019
  $(entityCreatedColumn:name) AS created,
9020
- version
9020
+ $(entityVersionColumn:name) AS version
9021
9021
  FROM $(entityTable:name)
9022
9022
  WHERE (
9023
- version IS NULL OR version = ''
9023
+ $(entityVersionColumn:name) IS NULL OR $(entityVersionColumn:name) = ''
9024
9024
  OR (
9025
- version <> $(latestVersion)
9025
+ $(entityVersionColumn:name) <> $(latestVersion)
9026
9026
  AND (
9027
9027
  SELECT
9028
9028
  CASE
9029
9029
  WHEN IS_JSON(plan) THEN JSON_ARRAY_LENGTH(plan::json)
9030
- ELSE 0
9030
+ ELSE 0
9031
9031
  END AS length
9032
9032
  FROM $(entityVersionsTable:name)
9033
- WHERE $(entityVersionsTable:name).version = version
9033
+ WHERE $(entityVersionsTable:name).version = $(entityVersionColumn:name)
9034
9034
  LIMIT 1
9035
9035
  )::integer <= $(latestVersionPlanLength)
9036
9036
  )
@@ -9040,7 +9040,9 @@ const getRecordList = async (db, entity, entityTableName, entityColumnNames, lat
9040
9040
  entityTable: entityTableName,
9041
9041
  entityVersionsTable: `${entity}_versions`,
9042
9042
  entityIdColumn: entityColumnNames.id,
9043
+ entityNameColumn: entityColumnNames.name,
9043
9044
  entityCreatedColumn: entityColumnNames.created,
9045
+ entityVersionColumn: entityColumnNames.version,
9044
9046
  latestVersion,
9045
9047
  latestVersionPlanLength
9046
9048
  };
@@ -9063,18 +9065,22 @@ const updateRecord = async (t, entityTableName, entityColumnNames, entityId, cur
9063
9065
  const useEtag = typeof etag === "number";
9064
9066
  const query = `
9065
9067
  UPDATE $(entityTable:name)
9066
- SET data = $(nextData),
9067
- version = $(nextVersion)
9068
- ${useEtag ? ", etag = etag + 1" : ""}
9069
- WHERE $(entityIdColumn:name) = $(entityId)
9070
- AND version = $(currentVersion)
9071
- ${useEtag ? "AND etag = $(etag)" : ""}
9068
+ SET
9069
+ $(payloadColumn:name) = $(nextData),
9070
+ $(versionColumn:name) = $(nextVersion)
9071
+ ${useEtag ? ", $(etagColumn:name) = $(etagColumn:name) + 1" : ""}
9072
+ WHERE $(idColumn:name) = $(entityId)
9073
+ AND $(versionColumn:name) = $(currentVersion)
9074
+ ${useEtag ? "AND $(etagColumn:name) = $(etag)" : ""}
9072
9075
  RETURNING *
9073
9076
  `;
9074
9077
  const params = {
9075
9078
  entityTable: entityTableName,
9079
+ idColumn: entityColumnNames.id,
9080
+ payloadColumn: entityColumnNames.payload,
9081
+ versionColumn: entityColumnNames.version,
9082
+ etagColumn: entityColumnNames.etag,
9076
9083
  entityId,
9077
- entityIdColumn: entityColumnNames.id,
9078
9084
  currentVersion,
9079
9085
  nextData,
9080
9086
  nextVersion,
@@ -9660,14 +9666,18 @@ const migrateRecord = async ({
9660
9666
  config.entityColumnNames,
9661
9667
  record.id
9662
9668
  );
9663
- const { data, etag, version: currentVersion } = currentRecord;
9669
+ const {
9670
+ [config.entityColumnNames.payload]: payload,
9671
+ [config.entityColumnNames.etag]: etag,
9672
+ [config.entityColumnNames.version]: currentVersion
9673
+ } = currentRecord;
9664
9674
  await beforeMigrateRecord({
9665
9675
  currentRecord,
9666
9676
  transaction,
9667
9677
  dry
9668
9678
  });
9669
9679
  const { nextPayload: nextData, nextVersion } = await migrate({
9670
- payload: data,
9680
+ payload,
9671
9681
  config: {
9672
9682
  ...config,
9673
9683
  version: currentVersion,
@@ -9701,9 +9711,9 @@ const migrateRecord = async ({
9701
9711
  return null;
9702
9712
  } catch (error) {
9703
9713
  const migrationErrorPayload = {
9704
- id: record.id,
9705
- name: record.name,
9706
- created: record.created,
9714
+ [config.entityColumnNames.id]: record.id,
9715
+ [config.entityColumnNames.name]: record.name,
9716
+ [config.entityColumnNames.created]: record.created,
9707
9717
  error,
9708
9718
  stackTrace: error.stack
9709
9719
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oliasoft-open-source/node-json-migrator",
3
- "version": "4.0.0-beta-1",
3
+ "version": "4.1.0-beta-1",
4
4
  "description": "A library for JSON migrations",
5
5
  "homepage": "https://oliasoft-open-source.gitlab.io/node-postgresql-migrator",
6
6
  "bugs": {