@angelps/prisma-query-builder 0.1.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.
Files changed (130) hide show
  1. package/README.md +709 -0
  2. package/dist/adapters/index.d.ts +3 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/index.js +3 -0
  5. package/dist/adapters/index.js.map +1 -0
  6. package/dist/adapters/valibot.adapter.d.ts +14 -0
  7. package/dist/adapters/valibot.adapter.d.ts.map +1 -0
  8. package/dist/adapters/valibot.adapter.js +21 -0
  9. package/dist/adapters/valibot.adapter.js.map +1 -0
  10. package/dist/adapters/zod.adapter.d.ts +29 -0
  11. package/dist/adapters/zod.adapter.d.ts.map +1 -0
  12. package/dist/adapters/zod.adapter.js +42 -0
  13. package/dist/adapters/zod.adapter.js.map +1 -0
  14. package/dist/controllers/generic.controller.d.ts +79 -0
  15. package/dist/controllers/generic.controller.d.ts.map +1 -0
  16. package/dist/controllers/generic.controller.js +279 -0
  17. package/dist/controllers/generic.controller.js.map +1 -0
  18. package/dist/controllers/index.d.ts +2 -0
  19. package/dist/controllers/index.d.ts.map +1 -0
  20. package/dist/controllers/index.js +2 -0
  21. package/dist/controllers/index.js.map +1 -0
  22. package/dist/errors/app-errors.d.ts +17 -0
  23. package/dist/errors/app-errors.d.ts.map +1 -0
  24. package/dist/errors/app-errors.js +28 -0
  25. package/dist/errors/app-errors.js.map +1 -0
  26. package/dist/errors/error-messages.d.ts +80 -0
  27. package/dist/errors/error-messages.d.ts.map +1 -0
  28. package/dist/errors/error-messages.js +75 -0
  29. package/dist/errors/error-messages.js.map +1 -0
  30. package/dist/errors/index.d.ts +3 -0
  31. package/dist/errors/index.d.ts.map +1 -0
  32. package/dist/errors/index.js +3 -0
  33. package/dist/errors/index.js.map +1 -0
  34. package/dist/index.d.ts +9 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +9 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/query-builder/helpers/order-by.helper.d.ts +4 -0
  39. package/dist/query-builder/helpers/order-by.helper.d.ts.map +1 -0
  40. package/dist/query-builder/helpers/order-by.helper.js +24 -0
  41. package/dist/query-builder/helpers/order-by.helper.js.map +1 -0
  42. package/dist/query-builder/helpers/pagination.helper.d.ts +6 -0
  43. package/dist/query-builder/helpers/pagination.helper.d.ts.map +1 -0
  44. package/dist/query-builder/helpers/pagination.helper.js +9 -0
  45. package/dist/query-builder/helpers/pagination.helper.js.map +1 -0
  46. package/dist/query-builder/helpers/where.helper.d.ts +5 -0
  47. package/dist/query-builder/helpers/where.helper.d.ts.map +1 -0
  48. package/dist/query-builder/helpers/where.helper.js +356 -0
  49. package/dist/query-builder/helpers/where.helper.js.map +1 -0
  50. package/dist/query-builder/index.d.ts +3 -0
  51. package/dist/query-builder/index.d.ts.map +1 -0
  52. package/dist/query-builder/index.js +3 -0
  53. package/dist/query-builder/index.js.map +1 -0
  54. package/dist/query-builder/query-builder.d.ts +56 -0
  55. package/dist/query-builder/query-builder.d.ts.map +1 -0
  56. package/dist/query-builder/query-builder.js +149 -0
  57. package/dist/query-builder/query-builder.js.map +1 -0
  58. package/dist/query-builder/query-builder.types.d.ts +83 -0
  59. package/dist/query-builder/query-builder.types.d.ts.map +1 -0
  60. package/dist/query-builder/query-builder.types.js +2 -0
  61. package/dist/query-builder/query-builder.types.js.map +1 -0
  62. package/dist/repositories/crud.repository.prisma.d.ts +44 -0
  63. package/dist/repositories/crud.repository.prisma.d.ts.map +1 -0
  64. package/dist/repositories/crud.repository.prisma.js +246 -0
  65. package/dist/repositories/crud.repository.prisma.js.map +1 -0
  66. package/dist/repositories/index.d.ts +2 -0
  67. package/dist/repositories/index.d.ts.map +1 -0
  68. package/dist/repositories/index.js +2 -0
  69. package/dist/repositories/index.js.map +1 -0
  70. package/dist/services/audit.service.d.ts +32 -0
  71. package/dist/services/audit.service.d.ts.map +1 -0
  72. package/dist/services/audit.service.js +57 -0
  73. package/dist/services/audit.service.js.map +1 -0
  74. package/dist/services/error-handler.service.d.ts +34 -0
  75. package/dist/services/error-handler.service.d.ts.map +1 -0
  76. package/dist/services/error-handler.service.js +159 -0
  77. package/dist/services/error-handler.service.js.map +1 -0
  78. package/dist/services/index.d.ts +3 -0
  79. package/dist/services/index.d.ts.map +1 -0
  80. package/dist/services/index.js +3 -0
  81. package/dist/services/index.js.map +1 -0
  82. package/dist/types/crud-config.d.ts +20 -0
  83. package/dist/types/crud-config.d.ts.map +1 -0
  84. package/dist/types/crud-config.js +2 -0
  85. package/dist/types/crud-config.js.map +1 -0
  86. package/dist/types/generic-repository.d.ts +36 -0
  87. package/dist/types/generic-repository.d.ts.map +1 -0
  88. package/dist/types/generic-repository.js +2 -0
  89. package/dist/types/generic-repository.js.map +1 -0
  90. package/dist/types/index.d.ts +8 -0
  91. package/dist/types/index.d.ts.map +1 -0
  92. package/dist/types/index.js +8 -0
  93. package/dist/types/index.js.map +1 -0
  94. package/dist/types/logger.d.ts +17 -0
  95. package/dist/types/logger.d.ts.map +1 -0
  96. package/dist/types/logger.js +8 -0
  97. package/dist/types/logger.js.map +1 -0
  98. package/dist/types/pagination.d.ts +11 -0
  99. package/dist/types/pagination.d.ts.map +1 -0
  100. package/dist/types/pagination.js +2 -0
  101. package/dist/types/pagination.js.map +1 -0
  102. package/dist/types/prisma-delegate.types.d.ts +36 -0
  103. package/dist/types/prisma-delegate.types.d.ts.map +1 -0
  104. package/dist/types/prisma-delegate.types.js +15 -0
  105. package/dist/types/prisma-delegate.types.js.map +1 -0
  106. package/dist/types/query-params.d.ts +40 -0
  107. package/dist/types/query-params.d.ts.map +1 -0
  108. package/dist/types/query-params.js +2 -0
  109. package/dist/types/query-params.js.map +1 -0
  110. package/dist/types/schema-adapter.d.ts +19 -0
  111. package/dist/types/schema-adapter.d.ts.map +1 -0
  112. package/dist/types/schema-adapter.js +2 -0
  113. package/dist/types/schema-adapter.js.map +1 -0
  114. package/dist/utils/date.utils.d.ts +13 -0
  115. package/dist/utils/date.utils.d.ts.map +1 -0
  116. package/dist/utils/date.utils.js +75 -0
  117. package/dist/utils/date.utils.js.map +1 -0
  118. package/dist/utils/index.d.ts +4 -0
  119. package/dist/utils/index.d.ts.map +1 -0
  120. package/dist/utils/index.js +4 -0
  121. package/dist/utils/index.js.map +1 -0
  122. package/dist/utils/phone.utils.d.ts +7 -0
  123. package/dist/utils/phone.utils.d.ts.map +1 -0
  124. package/dist/utils/phone.utils.js +15 -0
  125. package/dist/utils/phone.utils.js.map +1 -0
  126. package/dist/utils/response.utils.d.ts +5 -0
  127. package/dist/utils/response.utils.d.ts.map +1 -0
  128. package/dist/utils/response.utils.js +13 -0
  129. package/dist/utils/response.utils.js.map +1 -0
  130. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where.helper.js","sourceRoot":"","sources":["../../../src/query-builder/helpers/where.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './query-builder.types.js';
2
+ export * from './query-builder.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './query-builder.types.js';
2
+ export * from './query-builder.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { CrudConfig } from '../types/crud-config.js';
2
+ import type { PaginationModel } from '../types/pagination.js';
3
+ import type { QueryParams } from '../types/query-params.js';
4
+ import type { FindAllAndCountOptions, FindAllWithCursorOptions, CursorPaginationResult, QueryBuilderOptions, PrismaCrudDelegate } from './query-builder.types.js';
5
+ export declare class PrismaQueryBuilder<TResult, TWhere, TOrderBy> {
6
+ protected readonly config: CrudConfig<any>;
7
+ protected readonly options: QueryBuilderOptions<TResult>;
8
+ constructor(config?: CrudConfig<any>, options?: QueryBuilderOptions<TResult>);
9
+ /**
10
+ * Create a PrismaQueryBuilder with types inferred from the Prisma delegate.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * // Instead of:
15
+ * const qb = new PrismaQueryBuilder<User, Prisma.UserWhereInput, Prisma.UserOrderByWithRelationInput>(config, options);
16
+ *
17
+ * // You can write:
18
+ * const qb = PrismaQueryBuilder.from(prisma.user, config, options);
19
+ * ```
20
+ */
21
+ static from<D extends PrismaCrudDelegate<any, any, any>>(_delegate: D, config?: CrudConfig<any>, options?: QueryBuilderOptions<any>): PrismaQueryBuilder<Awaited<ReturnType<D['findMany']>> extends (infer T)[] ? T : never, D extends {
22
+ count(args: {
23
+ where?: infer W;
24
+ }): any;
25
+ } ? NonNullable<W> : never, any>;
26
+ findAllAndCount<TResult, TWhere, TOrderBy, TFindManyArgs extends Record<string, unknown>>(options: FindAllAndCountOptions<TResult, TWhere, TOrderBy, TFindManyArgs>): Promise<PaginationModel<TResult>>;
27
+ /**
28
+ * Paginate using cursor-based strategy (better for large datasets).
29
+ *
30
+ * Uses Prisma's native cursor pagination: fetches `take + 1` items to
31
+ * determine if there are more pages, then trims the extra item.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const result = await qb.findAllWithCursor({
36
+ * delegate: prisma.user,
37
+ * queryParams: { cursor: 42, size: 10 },
38
+ * buildWhere: (p) => qb.buildWhere(p),
39
+ * });
40
+ * // { items, nextCursor, hasMore }
41
+ * ```
42
+ */
43
+ findAllWithCursor<TResult, TWhere, TOrderBy, TFindManyArgs extends Record<string, unknown>>(options: FindAllWithCursorOptions<TResult, TWhere, TOrderBy, TFindManyArgs>): Promise<CursorPaginationResult<TResult>>;
44
+ findAllWithoutPagination<TResult, TWhere, TOrderBy, TFindManyArgs extends Record<string, unknown>>(options: FindAllAndCountOptions<TResult, TWhere, TOrderBy, TFindManyArgs>): Promise<TResult[]>;
45
+ buildWhere(params: QueryParams, additionalWhere?: Record<string, unknown>): TWhere;
46
+ buildOrderBy(sort?: string): TOrderBy[] | undefined;
47
+ /**
48
+ * Build a Prisma `select` object from a comma-separated `fields` string.
49
+ *
50
+ * @example
51
+ * buildSelect('id,name,email')
52
+ * // → { id: true, name: true, email: true }
53
+ */
54
+ buildSelect(fields?: string): Record<string, true> | undefined;
55
+ }
56
+ //# sourceMappingURL=query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query-builder/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ;IAErD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC;gBADrC,MAAM,GAAE,UAAU,CAAC,GAAG,CAAM,EAC5B,OAAO,GAAE,mBAAmB,CAAC,OAAO,CAAM;IAK/D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrD,SAAS,EAAE,CAAC,EACZ,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,GACjC,kBAAkB,CACnB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,EAClE,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;SAAE,GAAG,GAAG,CAAA;KAAE,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,EAC5E,GAAG,CACJ;IAMK,eAAe,CACnB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE7C,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,GACxE,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IA8CpC;;;;;;;;;;;;;;;OAeG;IACG,iBAAiB,CACrB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE7C,OAAO,EAAE,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,GAC1E,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAsDrC,wBAAwB,CAC5B,OAAO,EACP,MAAM,EACN,QAAQ,EACR,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE7C,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,GACxE,OAAO,CAAC,OAAO,EAAE,CAAC;IAoBrB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,MAAM;IAItF,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,SAAS;IAInD;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS;CAQ/D"}
@@ -0,0 +1,149 @@
1
+ import { parsePagination } from './helpers/pagination.helper.js';
2
+ import { buildWhereClause } from './helpers/where.helper.js';
3
+ import { buildOrderByClause } from './helpers/order-by.helper.js';
4
+ export class PrismaQueryBuilder {
5
+ config;
6
+ options;
7
+ constructor(config = {}, options = {}) {
8
+ this.config = config;
9
+ this.options = options;
10
+ }
11
+ // ─── Factory method for simplified generics ───────────────────────────
12
+ /**
13
+ * Create a PrismaQueryBuilder with types inferred from the Prisma delegate.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * // Instead of:
18
+ * const qb = new PrismaQueryBuilder<User, Prisma.UserWhereInput, Prisma.UserOrderByWithRelationInput>(config, options);
19
+ *
20
+ * // You can write:
21
+ * const qb = PrismaQueryBuilder.from(prisma.user, config, options);
22
+ * ```
23
+ */
24
+ static from(_delegate, config, options) {
25
+ return new PrismaQueryBuilder(config, options);
26
+ }
27
+ // ─── Paginated queries ────────────────────────────────────────────────
28
+ async findAllAndCount(options) {
29
+ const { delegate, queryParams = {}, pageDefault = 1, sizeDefault = 10, extraArgs, buildWhere, buildOrderBy, } = options;
30
+ const { page, size } = parsePagination(queryParams, pageDefault, sizeDefault);
31
+ const where = buildWhere(queryParams);
32
+ const orderBy = buildOrderBy ? buildOrderBy(queryParams.sort) : undefined;
33
+ const select = this.buildSelect(queryParams.fields);
34
+ const canApplySelect = select && !extraArgs?.['select'] && !extraArgs?.['include'];
35
+ const findManyArgs = {
36
+ ...(extraArgs ?? {}),
37
+ ...(canApplySelect ? { select } : {}),
38
+ where,
39
+ ...(orderBy ? { orderBy } : {}),
40
+ skip: (page - 1) * size,
41
+ take: size,
42
+ };
43
+ const [items, count] = await Promise.all([
44
+ delegate.findMany(findManyArgs),
45
+ delegate.count({ where }),
46
+ ]);
47
+ return {
48
+ items,
49
+ pagination: {
50
+ count,
51
+ pages: Math.ceil(count / size),
52
+ size,
53
+ current: page,
54
+ },
55
+ };
56
+ }
57
+ // ─── Cursor-based pagination ──────────────────────────────────────────
58
+ /**
59
+ * Paginate using cursor-based strategy (better for large datasets).
60
+ *
61
+ * Uses Prisma's native cursor pagination: fetches `take + 1` items to
62
+ * determine if there are more pages, then trims the extra item.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const result = await qb.findAllWithCursor({
67
+ * delegate: prisma.user,
68
+ * queryParams: { cursor: 42, size: 10 },
69
+ * buildWhere: (p) => qb.buildWhere(p),
70
+ * });
71
+ * // { items, nextCursor, hasMore }
72
+ * ```
73
+ */
74
+ async findAllWithCursor(options) {
75
+ const { delegate, queryParams = {}, sizeDefault = 10, cursorField = 'id', extraArgs, buildWhere, buildOrderBy, } = options;
76
+ const rawSize = queryParams.size
77
+ ? parseInt(String(queryParams.size), 10)
78
+ : sizeDefault;
79
+ const size = Number.isFinite(rawSize) && rawSize > 0 ? rawSize : sizeDefault;
80
+ const where = buildWhere(queryParams);
81
+ const orderBy = buildOrderBy ? buildOrderBy(queryParams.sort) : undefined;
82
+ const select = this.buildSelect(queryParams.fields);
83
+ const canApplySelect = select && !extraArgs?.['select'] && !extraArgs?.['include'];
84
+ const cursorValue = queryParams.cursor;
85
+ const cursorId = cursorValue !== undefined ? Number(cursorValue) : undefined;
86
+ const findManyArgs = {
87
+ ...(extraArgs ?? {}),
88
+ ...(canApplySelect ? { select } : {}),
89
+ where,
90
+ ...(orderBy ? { orderBy } : {}),
91
+ take: size + 1, // fetch one extra to check hasMore
92
+ ...(cursorId !== undefined && !Number.isNaN(cursorId)
93
+ ? {
94
+ cursor: { [cursorField]: cursorId },
95
+ skip: 1, // skip the cursor item itself
96
+ }
97
+ : {}),
98
+ };
99
+ const items = await delegate.findMany(findManyArgs);
100
+ const hasMore = items.length > size;
101
+ const trimmed = hasMore ? items.slice(0, size) : items;
102
+ const lastItem = trimmed[trimmed.length - 1];
103
+ const nextCursor = hasMore && lastItem ? lastItem[cursorField] : null;
104
+ return {
105
+ items: trimmed,
106
+ nextCursor,
107
+ hasMore,
108
+ };
109
+ }
110
+ // ─── Unpaginated queries ──────────────────────────────────────────────
111
+ async findAllWithoutPagination(options) {
112
+ const { delegate, queryParams = {}, extraArgs, buildWhere, buildOrderBy } = options;
113
+ const where = buildWhere(queryParams);
114
+ const orderBy = buildOrderBy ? buildOrderBy(queryParams.sort) : undefined;
115
+ const select = this.buildSelect(queryParams.fields);
116
+ const canApplySelect = select && !extraArgs?.['select'] && !extraArgs?.['include'];
117
+ const findManyArgs = {
118
+ ...(extraArgs ?? {}),
119
+ ...(canApplySelect ? { select } : {}),
120
+ where,
121
+ ...(orderBy ? { orderBy } : {}),
122
+ };
123
+ return delegate.findMany(findManyArgs);
124
+ }
125
+ // ─── Builder helpers ──────────────────────────────────────────────────
126
+ buildWhere(params, additionalWhere = {}) {
127
+ return buildWhereClause(params, this.options, this.config, additionalWhere);
128
+ }
129
+ buildOrderBy(sort) {
130
+ return buildOrderByClause(sort, this.options, this.config);
131
+ }
132
+ /**
133
+ * Build a Prisma `select` object from a comma-separated `fields` string.
134
+ *
135
+ * @example
136
+ * buildSelect('id,name,email')
137
+ * // → { id: true, name: true, email: true }
138
+ */
139
+ buildSelect(fields) {
140
+ if (!fields || typeof fields !== 'string' || fields.trim() === '')
141
+ return undefined;
142
+ const select = {};
143
+ for (const field of fields.split(',').map((f) => f.trim()).filter(Boolean)) {
144
+ select[field] = true;
145
+ }
146
+ return Object.keys(select).length > 0 ? select : undefined;
147
+ }
148
+ }
149
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { QueryParams } from '../types/query-params.js';
2
+ export interface PrismaCrudDelegate<TResult, TWhere, TFindManyArgs> {
3
+ findMany(args: TFindManyArgs): Promise<TResult[]>;
4
+ count(args: {
5
+ where?: TWhere;
6
+ }): Promise<number>;
7
+ findUnique?(args: {
8
+ where: TWhere;
9
+ }): Promise<TResult | null>;
10
+ findFirst?(args: {
11
+ where: TWhere;
12
+ }): Promise<TResult | null>;
13
+ create(args: {
14
+ data: any;
15
+ }): Promise<TResult>;
16
+ update(args: {
17
+ where: TWhere;
18
+ data: any;
19
+ }): Promise<TResult>;
20
+ delete?(args: {
21
+ where: TWhere;
22
+ }): Promise<TResult>;
23
+ createMany?(args: {
24
+ data: any;
25
+ skipDuplicates?: boolean;
26
+ }): Promise<{
27
+ count: number;
28
+ }>;
29
+ updateMany?(args: {
30
+ where: TWhere;
31
+ data: any;
32
+ }): Promise<{
33
+ count: number;
34
+ }>;
35
+ deleteMany?(args: {
36
+ where: TWhere;
37
+ }): Promise<{
38
+ count: number;
39
+ }>;
40
+ upsert?(args: {
41
+ where: TWhere;
42
+ create: any;
43
+ update: any;
44
+ }): Promise<TResult>;
45
+ }
46
+ export type FindAllAndCountOptions<TResult, TWhere, TOrderBy, TFindManyArgs> = {
47
+ delegate: PrismaCrudDelegate<TResult, TWhere, TFindManyArgs>;
48
+ queryParams?: QueryParams;
49
+ pageDefault?: number;
50
+ sizeDefault?: number;
51
+ buildWhere: (params: QueryParams) => TWhere;
52
+ buildOrderBy?: (sort?: string) => TOrderBy[] | undefined;
53
+ extraArgs?: Omit<TFindManyArgs, 'where' | 'orderBy' | 'skip' | 'take'>;
54
+ };
55
+ /** Result type for cursor-based pagination. */
56
+ export type CursorPaginationResult<TResult> = {
57
+ items: TResult[];
58
+ nextCursor: string | number | null;
59
+ hasMore: boolean;
60
+ };
61
+ export type FindAllWithCursorOptions<TResult, TWhere, TOrderBy, TFindManyArgs> = {
62
+ delegate: PrismaCrudDelegate<TResult, TWhere, TFindManyArgs>;
63
+ queryParams?: QueryParams;
64
+ sizeDefault?: number;
65
+ cursorField?: string;
66
+ buildWhere: (params: QueryParams) => TWhere;
67
+ buildOrderBy?: (sort?: string) => TOrderBy[] | undefined;
68
+ extraArgs?: Omit<TFindManyArgs, 'where' | 'orderBy' | 'skip' | 'take' | 'cursor'>;
69
+ };
70
+ export interface QueryBuilderOptions<TResult> {
71
+ filterableFields?: (keyof TResult)[];
72
+ likeFields?: (keyof TResult)[];
73
+ notLikeFields?: (keyof TResult)[];
74
+ sortableFields?: (keyof TResult)[];
75
+ searchDateFields?: (keyof TResult)[];
76
+ operationFields?: (keyof TResult)[];
77
+ omitFields?: (keyof TResult)[];
78
+ orderBy?: {
79
+ field: string;
80
+ direction: 'asc' | 'desc';
81
+ }[];
82
+ }
83
+ //# sourceMappingURL=query-builder.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.types.d.ts","sourceRoot":"","sources":["../../src/query-builder/query-builder.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query-builder.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.types.js","sourceRoot":"","sources":["../../src/query-builder/query-builder.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import { PrismaQueryBuilder } from "../query-builder/query-builder.js";
2
+ import { PrismaCrudDelegate, QueryBuilderOptions } from "../query-builder/query-builder.types.js";
3
+ import { PaginationModel } from "../types/pagination.js";
4
+ import { QueryParams } from "../types/query-params.js";
5
+ import { FindByIdOptions, RepositoryOptions } from "../types/generic-repository.js";
6
+ import { CrudConfig } from "../types/crud-config.js";
7
+ import type { SchemaAdapter } from "../types/schema-adapter.js";
8
+ export type CrudRepositoryExtras = {
9
+ /** Custom schema adapter (defaults to ValibotAdapter). */
10
+ schemaAdapter?: SchemaAdapter;
11
+ };
12
+ export declare class CrudRepository<TResult, TWhere, TOrderBy, TFindManyArgs extends Record<string, unknown>, TGroupByArgs = any> {
13
+ protected readonly delegate: PrismaCrudDelegate<TResult, TWhere, TFindManyArgs>;
14
+ protected readonly config: CrudConfig<TFindManyArgs>;
15
+ protected readonly queryOptions: QueryBuilderOptions<TResult>;
16
+ protected createSchema: unknown;
17
+ protected updateSchema: unknown;
18
+ protected readonly qb: PrismaQueryBuilder<TResult, TWhere, TOrderBy>;
19
+ protected readonly schemaAdapter: SchemaAdapter;
20
+ constructor(delegate: PrismaCrudDelegate<TResult, TWhere, TFindManyArgs>, config?: CrudConfig<TFindManyArgs>, queryOptions?: QueryBuilderOptions<TResult>, extras?: CrudRepositoryExtras);
21
+ findAll(queryParams?: QueryParams): Promise<PaginationModel<TResult>>;
22
+ findById(id: number, options?: FindByIdOptions): Promise<TResult | null>;
23
+ findOne(whereInput: Partial<TResult>, options?: RepositoryOptions): Promise<TResult | null>;
24
+ create(data: unknown, options?: RepositoryOptions): Promise<TResult>;
25
+ update(id: number, data: unknown, options?: RepositoryOptions): Promise<void>;
26
+ delete(id: number, options?: RepositoryOptions): Promise<void>;
27
+ createMany(data: unknown[], options?: RepositoryOptions): Promise<{
28
+ count: number;
29
+ }>;
30
+ updateMany(ids: number[], data: unknown, options?: RepositoryOptions): Promise<{
31
+ count: number;
32
+ }>;
33
+ deleteMany(ids: number[], options?: RepositoryOptions): Promise<{
34
+ count: number;
35
+ }>;
36
+ upsert(data: unknown, options?: RepositoryOptions): Promise<TResult>;
37
+ /**
38
+ * Override in subclasses to transform validated data before it reaches
39
+ * the Prisma delegate. Common use case: convert string dates to Date objects
40
+ * for @db.Date / @db.Time fields.
41
+ */
42
+ protected transformData(data: Record<string, unknown>): Record<string, unknown>;
43
+ }
44
+ //# sourceMappingURL=crud.repository.prisma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud.repository.prisma.d.ts","sourceRoot":"","sources":["../../src/repositories/crud.repository.prisma.ts"],"names":[],"mappings":"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"}