@revisium/core 2.3.0-alpha.1 → 2.3.0-alpha.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.
Files changed (29) hide show
  1. package/dist/package.json +2 -1
  2. package/dist/src/features/row/queries/handlers/get-rows.handler.d.ts +2 -4
  3. package/dist/src/features/row/queries/handlers/get-rows.handler.js +4 -24
  4. package/dist/src/features/row/queries/handlers/get-rows.handler.js.map +1 -1
  5. package/dist/src/features/row/queries/impl/get-rows.query.d.ts +3 -3
  6. package/dist/src/features/row/queries/impl/get-rows.query.js.map +1 -1
  7. package/dist/src/features/row/utils/get-rows-sql.d.ts +5 -0
  8. package/dist/src/features/row/utils/get-rows-sql.js +70 -0
  9. package/dist/src/features/row/utils/get-rows-sql.js.map +1 -0
  10. package/dist/tsconfig.build.tsbuildinfo +1 -1
  11. package/package.json +2 -1
  12. package/dist/src/utils/prisma-sql-generator/__tests__/shared-helpers.d.ts +0 -16
  13. package/dist/src/utils/prisma-sql-generator/__tests__/shared-helpers.js +0 -70
  14. package/dist/src/utils/prisma-sql-generator/__tests__/shared-helpers.js.map +0 -1
  15. package/dist/src/utils/prisma-sql-generator/__tests__/test-helpers.d.ts +0 -52
  16. package/dist/src/utils/prisma-sql-generator/__tests__/test-helpers.js +0 -531
  17. package/dist/src/utils/prisma-sql-generator/__tests__/test-helpers.js.map +0 -1
  18. package/dist/src/utils/prisma-sql-generator/index.d.ts +0 -2
  19. package/dist/src/utils/prisma-sql-generator/index.js +0 -22
  20. package/dist/src/utils/prisma-sql-generator/index.js.map +0 -1
  21. package/dist/src/utils/prisma-sql-generator/json-path.d.ts +0 -14
  22. package/dist/src/utils/prisma-sql-generator/json-path.js +0 -121
  23. package/dist/src/utils/prisma-sql-generator/json-path.js.map +0 -1
  24. package/dist/src/utils/prisma-sql-generator/types.d.ts +0 -105
  25. package/dist/src/utils/prisma-sql-generator/types.js +0 -3
  26. package/dist/src/utils/prisma-sql-generator/types.js.map +0 -1
  27. package/dist/src/utils/prisma-sql-generator/where-generator.prisma.d.ts +0 -21
  28. package/dist/src/utils/prisma-sql-generator/where-generator.prisma.js +0 -527
  29. package/dist/src/utils/prisma-sql-generator/where-generator.prisma.js.map +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revisium/core",
3
- "version": "2.3.0-alpha.1",
3
+ "version": "2.3.0-alpha.2",
4
4
  "description": "Revisium is a tool (UI/API) inspired by JSON (JSON Schema) and Git, designed to provide a flexible and low-level headless CMS solution.",
5
5
  "private": false,
6
6
  "homepage": "https://revisium.io",
@@ -66,6 +66,7 @@
66
66
  "@nestjs/swagger": "^11.2.0",
67
67
  "@nestjs/terminus": "^11.0.0",
68
68
  "@prisma/client": "^6.8.2",
69
+ "@revisium/prisma-pg-json": "^0.4.0",
69
70
  "ajv": "^8.17.1",
70
71
  "bcrypt": "^6.0.0",
71
72
  "bentocache": "^1.5.0",
@@ -1,5 +1,4 @@
1
1
  import { IQueryHandler } from '@nestjs/cqrs';
2
- import { Prisma } from '@prisma/client';
3
2
  import { PluginService } from '../../../../features/plugin/plugin.service';
4
3
  import { TransactionPrismaService } from '../../../../infrastructure/database/transaction-prisma.service';
5
4
  import { GetRowsQuery, GetRowsQueryReturnType } from '../../../../features/row/queries/impl';
@@ -15,7 +14,7 @@ export declare class GetRowsHandler implements IQueryHandler<GetRowsQuery, GetRo
15
14
  revisionId: string;
16
15
  tableId: string;
17
16
  };
18
- data: Prisma.JsonValue;
17
+ data: import("@prisma/client/runtime/library").JsonValue;
19
18
  id: string;
20
19
  createdId: string;
21
20
  createdAt: Date;
@@ -23,11 +22,10 @@ export declare class GetRowsHandler implements IQueryHandler<GetRowsQuery, GetRo
23
22
  readonly: boolean;
24
23
  updatedAt: Date;
25
24
  hash: string;
26
- meta: Prisma.JsonValue;
25
+ meta: import("@prisma/client/runtime/library").JsonValue;
27
26
  publishedAt: Date;
28
27
  schemaHash: string;
29
28
  }>>;
30
29
  private getRows;
31
- private isSimpleOrdering;
32
30
  private getRowsCount;
33
31
  }
@@ -11,13 +11,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.GetRowsHandler = void 0;
13
13
  const cqrs_1 = require("@nestjs/cqrs");
14
- const client_1 = require("@prisma/client");
15
14
  const plugin_service_1 = require("../../../plugin/plugin.service");
15
+ const get_rows_sql_1 = require("../../utils/get-rows-sql");
16
16
  const transaction_prisma_service_1 = require("../../../../infrastructure/database/transaction-prisma.service");
17
17
  const impl_1 = require("../impl");
18
18
  const getOffsetPagination_1 = require("../../../share/commands/utils/getOffsetPagination");
19
19
  const share_transactional_queries_1 = require("../../../share/share.transactional.queries");
20
- const prisma_sql_generator_1 = require("../../../../utils/prisma-sql-generator");
21
20
  let GetRowsHandler = class GetRowsHandler {
22
21
  constructor(transactionService, shareTransactionalQueries, pluginService) {
23
22
  this.transactionService = transactionService;
@@ -50,30 +49,11 @@ let GetRowsHandler = class GetRowsHandler {
50
49
  });
51
50
  }
52
51
  getRows(args, tableVersionId, data) {
53
- if (this.isSimpleOrdering(data.orderBy)) {
54
- return this.transaction.table
55
- .findUniqueOrThrow({ where: { versionId: tableVersionId } })
56
- .rows({
57
- ...args,
58
- orderBy: data.orderBy ?? {
59
- createdAt: client_1.Prisma.SortOrder.desc,
60
- },
61
- where: data.where,
62
- });
63
- }
64
- else {
65
- return this.transaction.$queryRaw((0, prisma_sql_generator_1.generateGetRowsQueryPrisma)(tableVersionId, args.take, args.skip, data.where, data.orderBy));
66
- }
67
- }
68
- isSimpleOrdering(order) {
69
- return !order || Boolean(order?.every((orderItem) => !orderItem['data']));
52
+ return this.transaction.$queryRaw((0, get_rows_sql_1.getRowsSql)(tableVersionId, args.take, args.skip, data.where, data.orderBy));
70
53
  }
71
54
  async getRowsCount(tableVersionId, data) {
72
- const result = await this.transaction.table.findUniqueOrThrow({
73
- where: { versionId: tableVersionId },
74
- include: { _count: { select: { rows: { where: data.where } } } },
75
- });
76
- return result._count.rows;
55
+ const result = await this.transaction.$queryRaw((0, get_rows_sql_1.getRowsCountSql)(tableVersionId, data.where));
56
+ return Number(result[0].count);
77
57
  }
78
58
  };
79
59
  exports.GetRowsHandler = GetRowsHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"get-rows.handler.js","sourceRoot":"","sources":["../../../../../../src/features/row/queries/handlers/get-rows.handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-rows.handler.js","sourceRoot":"","sources":["../../../../../../src/features/row/queries/handlers/get-rows.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA2D;AAG3D,mEAAmE;AACnE,2DAG6C;AAC7C,+GAAkG;AAClG,kCAIuC;AACvC,2FAA4F;AAC5F,4FAA2F;AAGpF,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YACmB,kBAA4C,EAC5C,yBAAoD,EACpD,aAA4B;QAF5B,uBAAkB,GAAlB,kBAAkB,CAA0B;QAC5C,8BAAyB,GAAzB,yBAAyB,CAA2B;QACpD,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAEJ,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAgB;QACzC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GACjC,MAAM,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAC7D,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,CACb,CAAC;QAEJ,OAAO,IAAA,yCAAmB,EAAC;YACzB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;gBAE5D,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;oBACnC,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI;iBACL,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxB,GAAG,GAAG;oBACN,OAAO,EAAE;wBACP,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB;iBACF,CAAC,CAAC,CAAC;YACN,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CACb,IAAoC,EACpC,cAAsB,EACtB,IAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAC/B,IAAA,yBAAU,EACR,cAAc,EACd,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAmC,EACxC,IAAI,CAAC,OAAyC,CAC/C,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,cAAsB,EAAE,IAAsB;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAC7C,IAAA,8BAAe,EAAC,cAAc,EAAE,IAAI,CAAC,KAAmC,CAAC,CAC1E,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AAjEY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAY,EAAC,mBAAY,CAAC;qCAKc,qDAAwB;QACjB,uDAAyB;QACrC,8BAAa;GANpC,cAAc,CAiE1B"}
@@ -1,7 +1,7 @@
1
1
  import { Prisma } from '@prisma/client';
2
+ import { JsonValueType, JsonAggregation, OrderByConditions } from '@revisium/prisma-pg-json';
2
3
  import { IPaginatedType } from '../../../../features/share/pagination.interface';
3
4
  import { RowWithContext } from '../../../../features/share/types/row-with-context.types';
4
- import { JsonAggregation, JsonValueType } from '../../../../utils/prisma-sql-generator';
5
5
  export type JsonOrder = {
6
6
  data: {
7
7
  path: string;
@@ -16,7 +16,7 @@ export declare class GetRowsQuery {
16
16
  readonly tableId: string;
17
17
  readonly first: number;
18
18
  readonly after?: string;
19
- readonly orderBy?: (Prisma.RowOrderByWithRelationInput | JsonOrder)[];
19
+ readonly orderBy?: OrderByConditions[];
20
20
  readonly where?: Prisma.RowWhereInput;
21
21
  };
22
22
  constructor(data: {
@@ -24,7 +24,7 @@ export declare class GetRowsQuery {
24
24
  readonly tableId: string;
25
25
  readonly first: number;
26
26
  readonly after?: string;
27
- readonly orderBy?: (Prisma.RowOrderByWithRelationInput | JsonOrder)[];
27
+ readonly orderBy?: OrderByConditions[];
28
28
  readonly where?: Prisma.RowWhereInput;
29
29
  });
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-rows.query.js","sourceRoot":"","sources":["../../../../../../src/features/row/queries/impl/get-rows.query.ts"],"names":[],"mappings":";;;AAcA,MAAa,YAAY;IACvB,YACkB,IAOf;QAPe,SAAI,GAAJ,IAAI,CAOnB;IACA,CAAC;CACL;AAXD,oCAWC"}
1
+ {"version":3,"file":"get-rows.query.js","sourceRoot":"","sources":["../../../../../../src/features/row/queries/impl/get-rows.query.ts"],"names":[],"mappings":";;;AAkBA,MAAa,YAAY;IACvB,YACkB,IAOf;QAPe,SAAI,GAAJ,IAAI,CAOnB;IACA,CAAC;CACL;AAXD,oCAWC"}
@@ -0,0 +1,5 @@
1
+ import { Prisma } from '@prisma/client';
2
+ import { FieldConfig, OrderByConditions, WhereConditions } from '@revisium/prisma-pg-json';
3
+ export declare const DEFAULT_ROW_FIELDS: FieldConfig;
4
+ export declare function getRowsSql(tableId: string, take: number, skip: number, whereConditions?: WhereConditions, orderBy?: OrderByConditions[]): Prisma.Sql;
5
+ export declare function getRowsCountSql(tableId: string, whereConditions?: WhereConditions): Prisma.Sql;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ROW_FIELDS = void 0;
4
+ exports.getRowsSql = getRowsSql;
5
+ exports.getRowsCountSql = getRowsCountSql;
6
+ const client_1 = require("@prisma/client");
7
+ const prisma_pg_json_1 = require("@revisium/prisma-pg-json");
8
+ exports.DEFAULT_ROW_FIELDS = {
9
+ versionId: 'string',
10
+ createdId: 'string',
11
+ id: 'string',
12
+ hash: 'string',
13
+ schemaHash: 'string',
14
+ readonly: 'boolean',
15
+ createdAt: 'date',
16
+ updatedAt: 'date',
17
+ publishedAt: 'date',
18
+ data: 'json',
19
+ meta: 'json',
20
+ };
21
+ function getRowsSql(tableId, take, skip, whereConditions, orderBy) {
22
+ const whereClause = (0, prisma_pg_json_1.generateWhere)({
23
+ where: whereConditions || {},
24
+ fieldConfig: exports.DEFAULT_ROW_FIELDS,
25
+ tableAlias: 'r',
26
+ });
27
+ const orderByClause = (orderBy ?? []).length
28
+ ? (0, prisma_pg_json_1.generateOrderBy)({
29
+ orderBy,
30
+ fieldConfig: exports.DEFAULT_ROW_FIELDS,
31
+ tableAlias: 'r',
32
+ })
33
+ : client_1.Prisma.sql `ORDER BY r."createdAt" DESC`;
34
+ return client_1.Prisma.sql `
35
+ SELECT
36
+ r."versionId",
37
+ r."createdId",
38
+ r."id",
39
+ r."readonly",
40
+ r."createdAt",
41
+ r."updatedAt",
42
+ r."publishedAt",
43
+ r."data",
44
+ r."meta",
45
+ r."hash",
46
+ r."schemaHash"
47
+ FROM "Row" r
48
+ INNER JOIN "_RowToTable" rt ON r."versionId" = rt."A"
49
+ WHERE rt."B" = ${tableId}
50
+ AND (${whereClause})
51
+ ${orderByClause}
52
+ LIMIT ${take}
53
+ OFFSET ${skip}
54
+ `;
55
+ }
56
+ function getRowsCountSql(tableId, whereConditions) {
57
+ const whereClause = (0, prisma_pg_json_1.generateWhere)({
58
+ where: whereConditions || {},
59
+ fieldConfig: exports.DEFAULT_ROW_FIELDS,
60
+ tableAlias: 'r',
61
+ });
62
+ return client_1.Prisma.sql `
63
+ SELECT COUNT(*) as count
64
+ FROM "Row" r
65
+ INNER JOIN "_RowToTable" rt ON r."versionId" = rt."A"
66
+ WHERE rt."B" = ${tableId}
67
+ AND (${whereClause})
68
+ `;
69
+ }
70
+ //# sourceMappingURL=get-rows-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-rows-sql.js","sourceRoot":"","sources":["../../../../../src/features/row/utils/get-rows-sql.ts"],"names":[],"mappings":";;;AAuBA,gCA2CC;AAED,0CAiBC;AArFD,2CAAwC;AACxC,6DAMkC;AAErB,QAAA,kBAAkB,GAAgB;IAC7C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,SAAgB,UAAU,CACxB,OAAe,EACf,IAAY,EACZ,IAAY,EACZ,eAAiC,EACjC,OAA6B;IAE7B,MAAM,WAAW,GAAG,IAAA,8BAAa,EAAC;QAChC,KAAK,EAAE,eAAe,IAAI,EAAE;QAC5B,WAAW,EAAE,0BAAkB;QAC/B,UAAU,EAAE,GAAG;KAChB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM;QAC1C,CAAC,CAAC,IAAA,gCAAe,EAAC;YACd,OAAO;YACP,WAAW,EAAE,0BAAkB;YAC/B,UAAU,EAAE,GAAG;SAChB,CAAC;QACJ,CAAC,CAAC,eAAM,CAAC,GAAG,CAAA,6BAA6B,CAAC;IAG5C,OAAO,eAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;qBAeE,OAAO;aACf,WAAW;MAClB,aAAa;YACP,IAAI;aACH,IAAI;GACd,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAC7B,OAAe,EACf,eAAiC;IAEjC,MAAM,WAAW,GAAG,IAAA,8BAAa,EAAC;QAChC,KAAK,EAAE,eAAe,IAAI,EAAE;QAC5B,WAAW,EAAE,0BAAkB;QAC/B,UAAU,EAAE,GAAG;KAChB,CAAC,CAAC;IAEH,OAAO,eAAM,CAAC,GAAG,CAAA;;;;qBAIE,OAAO;aACf,WAAW;GACrB,CAAC;AACJ,CAAC"}