@nestjs-dash/prisma 0.0.1 → 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.
package/dist/index.d.ts CHANGED
@@ -1,2 +1,108 @@
1
- export {};
1
+ import type { BelongsToMeta, FindOneOptions, ListQuery, ListQueryConfig, Paginated, PropertyAdapter, PropertyType, RecordData, RelationCapableAdapter, RelationDefinition, RelationOption, ResourceAdapter, SoftDeleteCapableAdapter } from '@nestjs-dash/adapter';
2
+ import { type ResourceClass } from '@nestjs-dash/core';
3
+ export interface PrismaDelegateLike<T = Record<string, unknown>> {
4
+ findMany(args?: {
5
+ where?: Record<string, unknown>;
6
+ orderBy?: Record<string, unknown>[];
7
+ skip?: number;
8
+ take?: number;
9
+ }): Promise<T[]>;
10
+ count(args?: {
11
+ where?: Record<string, unknown>;
12
+ }): Promise<number>;
13
+ findUnique(args: {
14
+ where: Record<string, unknown>;
15
+ include?: Record<string, boolean>;
16
+ }): Promise<T | null>;
17
+ create(args: {
18
+ data: Record<string, unknown>;
19
+ }): Promise<T>;
20
+ update(args: {
21
+ where: Record<string, unknown>;
22
+ data: Record<string, unknown>;
23
+ }): Promise<T>;
24
+ delete(args: {
25
+ where: Record<string, unknown>;
26
+ }): Promise<T>;
27
+ }
28
+ export interface PrismaRawClientLike {
29
+ queryRawUnsafe<T = unknown>(query: string, ...values: unknown[]): Promise<T>;
30
+ executeRawUnsafe(query: string, ...values: unknown[]): Promise<number>;
31
+ }
32
+ export declare class PrismaProperty implements PropertyAdapter {
33
+ private readonly propertyName;
34
+ private readonly propertyType;
35
+ private readonly flags;
36
+ constructor(propertyName: string, propertyType?: PropertyType, flags?: {
37
+ id?: boolean;
38
+ editable?: boolean;
39
+ sortable?: boolean;
40
+ });
41
+ name(): string;
42
+ type(): PropertyType;
43
+ isId(): boolean;
44
+ isEditable(): boolean;
45
+ isSortable(): boolean;
46
+ }
47
+ export declare class PrismaResource implements ResourceAdapter, RelationCapableAdapter, SoftDeleteCapableAdapter {
48
+ private readonly resourceId;
49
+ private readonly delegate;
50
+ private readonly props;
51
+ private readonly defaultConfig;
52
+ private readonly options;
53
+ constructor(resourceId: string, delegate: PrismaDelegateLike, props: PropertyAdapter[], defaultConfig: ListQueryConfig, options?: {
54
+ relations?: RelationDefinition[];
55
+ resolveRelated?: (slug: string) => PrismaResource | undefined;
56
+ softDeleteField?: string;
57
+ raw?: PrismaRawClientLike;
58
+ });
59
+ id(): string;
60
+ properties(): PropertyAdapter[];
61
+ supportsSoftDelete(): boolean;
62
+ deletedAtField(): string;
63
+ restore(id: string): Promise<void>;
64
+ find(query: ListQuery, config?: ListQueryConfig): Promise<Paginated<RecordData>>;
65
+ findOne(id: string, options?: FindOneOptions): Promise<RecordData | null>;
66
+ create(data: RecordData): Promise<RecordData>;
67
+ update(id: string, data: RecordData): Promise<RecordData>;
68
+ delete(id: string): Promise<void>;
69
+ findRelated(ownerId: string, relation: RelationDefinition, query: ListQuery): Promise<Paginated<RecordData>>;
70
+ associate(ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
71
+ dissociate(_ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
72
+ attach(ownerId: string, relation: RelationDefinition, relatedId: string, pivot?: RecordData): Promise<void>;
73
+ detach(ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
74
+ searchRelatedOptions(meta: BelongsToMeta, query?: {
75
+ search?: string;
76
+ limit?: number;
77
+ }): Promise<RelationOption[]>;
78
+ private pivotRelatedIds;
79
+ private requireRaw;
80
+ private requireRelated;
81
+ }
82
+ export declare function createPrismaResource(options: {
83
+ id: string;
84
+ delegate: PrismaDelegateLike;
85
+ properties: PropertyAdapter[];
86
+ listQueryConfig: ListQueryConfig;
87
+ relations?: RelationDefinition[];
88
+ resolveRelated?: (slug: string) => PrismaResource | undefined;
89
+ softDeleteField?: string;
90
+ raw?: PrismaRawClientLike;
91
+ }): PrismaResource;
92
+ export type CreatePrismaResourceFromModelOptions = {
93
+ id?: string;
94
+ properties?: PropertyAdapter[];
95
+ listQueryConfig?: ListQueryConfig;
96
+ relations?: RelationDefinition[];
97
+ resolveRelated?: (slug: string) => PrismaResource | undefined;
98
+ softDeleteField?: string;
99
+ raw?: PrismaRawClientLike;
100
+ };
101
+ export declare function createPrismaResourceFromModel(resource: ResourceClass, delegate: PrismaDelegateLike, options?: CreatePrismaResourceFromModelOptions): PrismaResource;
102
+ export declare const PrismaAdapter: {
103
+ forRoot(): {
104
+ name: string;
105
+ };
106
+ createResource: typeof createPrismaResource;
107
+ };
2
108
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,aAAa,EAEb,cAAc,EACd,SAAS,EACT,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKH,KAAK,aAAa,EACrB,MAAM,mBAAmB,CAAC;AAU3B,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,UAAU,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9D;AAQD,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7E,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAED,qBAAa,cAAe,YAAW,eAAe;IAElD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,YAAY,EAAE,MAAM,EACpB,YAAY,GAAE,YAAuB,EACrC,KAAK,GAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO;IAGvF,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,YAAY;IAIpB,IAAI,IAAI,OAAO;IAIf,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AAoDD,qBAAa,cACX,YAAW,eAAe,EAAE,sBAAsB,EAAE,wBAAwB;IAG1E,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJP,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,eAAe,EAAE,EACxB,aAAa,EAAE,eAAe,EAC9B,OAAO,GAAE;QACxB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACjC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;QAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,GAAG,CAAC,EAAE,mBAAmB,CAAC;KACtB;IAGR,EAAE,IAAI,MAAM;IAIZ,UAAU,IAAI,eAAe,EAAE;IAI/B,kBAAkB,IAAI,OAAO;IAI7B,cAAc,IAAI,MAAM;IAOlB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAqEhF,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAgBzE,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAKzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjC,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAyB3B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1F,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAeV,MAAM,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;IAuBV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevF,oBAAoB,CACxB,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9C,OAAO,CAAC,cAAc,EAAE,CAAC;YAad,eAAe;IAe7B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;CAUvB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B,GAAG,cAAc,CAajB;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAWF,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,oCAAyC,GACjD,cAAc,CAmChB;AAED,eAAO,MAAM,aAAa;;;;;CAKzB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,322 @@
1
- import { createRequire } from 'node:module';
2
- const require = createRequire(import.meta.url);
3
- const pkg = require('../package.json');
4
- console.log(`Hello from ${pkg.name}`);
1
+ import { relationsFromResource, resolveListQueryConfig, resolveResourceSlug, Table, } from '@nestjs-dash/core';
2
+ export class PrismaProperty {
3
+ constructor(propertyName, propertyType = 'string', flags = {}) {
4
+ this.propertyName = propertyName;
5
+ this.propertyType = propertyType;
6
+ this.flags = flags;
7
+ }
8
+ name() {
9
+ return this.propertyName;
10
+ }
11
+ type() {
12
+ return this.propertyType;
13
+ }
14
+ isId() {
15
+ return this.flags.id ?? this.propertyName === 'id';
16
+ }
17
+ isEditable() {
18
+ return this.flags.editable ?? !this.isId();
19
+ }
20
+ isSortable() {
21
+ return this.flags.sortable ?? true;
22
+ }
23
+ }
24
+ function operatorToPrismaFilter(operator, value) {
25
+ switch (operator) {
26
+ case '$eq':
27
+ return { equals: value };
28
+ case '$not':
29
+ return { not: value };
30
+ case '$null':
31
+ return { equals: null };
32
+ case '$in':
33
+ return { in: value.split(',') };
34
+ case '$gt':
35
+ return { gt: value };
36
+ case '$gte':
37
+ return { gte: value };
38
+ case '$lt':
39
+ return { lt: value };
40
+ case '$lte':
41
+ return { lte: value };
42
+ case '$btw': {
43
+ const [min, max] = value.split(',');
44
+ return { gte: min, lte: max };
45
+ }
46
+ case '$ilike':
47
+ case '$contains':
48
+ return { contains: value, mode: 'insensitive' };
49
+ case '$sw':
50
+ return { startsWith: value, mode: 'insensitive' };
51
+ default:
52
+ return { equals: value };
53
+ }
54
+ }
55
+ function emptyPage(query, config) {
56
+ const limit = query.limit ?? config.defaultLimit ?? 20;
57
+ return {
58
+ data: [],
59
+ meta: {
60
+ itemsPerPage: limit,
61
+ totalItems: 0,
62
+ currentPage: query.page ?? 1,
63
+ totalPages: 1,
64
+ sortBy: query.sortBy ?? config.defaultSortBy ?? [],
65
+ },
66
+ };
67
+ }
68
+ function singularize(value) {
69
+ return value.endsWith('s') ? value.slice(0, -1) : value;
70
+ }
71
+ export class PrismaResource {
72
+ constructor(resourceId, delegate, props, defaultConfig, options = {}) {
73
+ this.resourceId = resourceId;
74
+ this.delegate = delegate;
75
+ this.props = props;
76
+ this.defaultConfig = defaultConfig;
77
+ this.options = options;
78
+ }
79
+ id() {
80
+ return this.resourceId;
81
+ }
82
+ properties() {
83
+ return this.props;
84
+ }
85
+ supportsSoftDelete() {
86
+ return this.options.softDeleteField != null;
87
+ }
88
+ deletedAtField() {
89
+ if (!this.options.softDeleteField) {
90
+ throw new Error(`Resource ${this.resourceId} has no soft-delete field configured`);
91
+ }
92
+ return this.options.softDeleteField;
93
+ }
94
+ async restore(id) {
95
+ const field = this.deletedAtField();
96
+ await this.delegate.update({ where: { id }, data: { [field]: null } });
97
+ }
98
+ async find(query, config) {
99
+ const effectiveConfig = {
100
+ ...this.defaultConfig,
101
+ ...config,
102
+ sortableColumns: config?.sortableColumns ?? this.defaultConfig.sortableColumns,
103
+ };
104
+ const defaultLimit = effectiveConfig.defaultLimit ?? 20;
105
+ const maxLimit = effectiveConfig.maxLimit ?? 100;
106
+ const limit = Math.min(Math.max(query.limit ?? defaultLimit, 1), maxLimit);
107
+ const page = Math.max(query.page ?? 1, 1);
108
+ const and = [];
109
+ if (this.options.softDeleteField && !query.withDeleted) {
110
+ and.push({ [this.options.softDeleteField]: null });
111
+ }
112
+ const search = query.search?.trim();
113
+ const searchable = query.searchBy?.length
114
+ ? query.searchBy
115
+ : (effectiveConfig.searchableColumns ?? []);
116
+ if (search && searchable.length > 0) {
117
+ and.push({
118
+ OR: searchable.map((column) => ({ [column]: { contains: search, mode: 'insensitive' } })),
119
+ });
120
+ }
121
+ if (query.filter) {
122
+ for (const [column, raw] of Object.entries(query.filter)) {
123
+ const allowed = effectiveConfig.filterableColumns?.[column];
124
+ if (!allowed)
125
+ continue;
126
+ const values = Array.isArray(raw) ? raw : [raw];
127
+ for (const expression of values) {
128
+ const [operatorRaw, ...rest] = expression.split(':');
129
+ const value = rest.join(':');
130
+ const operator = (operatorRaw?.startsWith('$') ? operatorRaw : '$eq');
131
+ if (allowed !== true && !allowed.includes(operator))
132
+ continue;
133
+ and.push({ [column]: operatorToPrismaFilter(operator, value) });
134
+ }
135
+ }
136
+ }
137
+ const where = and.length > 0 ? { AND: and } : {};
138
+ const sortBy = query.sortBy?.length ? query.sortBy : (effectiveConfig.defaultSortBy ?? []);
139
+ const orderBy = sortBy
140
+ .filter(([column]) => effectiveConfig.sortableColumns.includes(column))
141
+ .map(([column, direction]) => ({ [column]: direction.toLowerCase() }));
142
+ const [data, totalItems] = await Promise.all([
143
+ this.delegate.findMany({ where, orderBy, skip: (page - 1) * limit, take: limit }),
144
+ this.delegate.count({ where }),
145
+ ]);
146
+ return {
147
+ data,
148
+ meta: {
149
+ itemsPerPage: limit,
150
+ totalItems,
151
+ currentPage: page,
152
+ totalPages: Math.max(Math.ceil(totalItems / limit), 1),
153
+ sortBy,
154
+ search: query.search,
155
+ filter: query.filter,
156
+ },
157
+ };
158
+ }
159
+ async findOne(id, options) {
160
+ const record = await this.delegate.findUnique({
161
+ where: { id },
162
+ include: options?.relations?.length
163
+ ? Object.fromEntries(options.relations.map((relation) => [relation, true]))
164
+ : undefined,
165
+ });
166
+ if (!record)
167
+ return null;
168
+ if (this.options.softDeleteField && record[this.options.softDeleteField] != null) {
169
+ return null;
170
+ }
171
+ return record;
172
+ }
173
+ async create(data) {
174
+ return this.delegate.create({ data });
175
+ }
176
+ async update(id, data) {
177
+ return this.delegate.update({ where: { id }, data });
178
+ }
179
+ async delete(id) {
180
+ if (this.options.softDeleteField) {
181
+ await this.delegate.update({
182
+ where: { id },
183
+ data: { [this.options.softDeleteField]: new Date() },
184
+ });
185
+ return;
186
+ }
187
+ await this.delegate.delete({ where: { id } });
188
+ }
189
+ async findRelated(ownerId, relation, query) {
190
+ const related = this.requireRelated(relation.relatedResource);
191
+ const config = relation.listQueryConfig ?? { sortableColumns: ['id'], defaultLimit: 20 };
192
+ if (relation.type === 'has-many') {
193
+ const foreignKey = relation.foreignKey;
194
+ if (!foreignKey) {
195
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
196
+ }
197
+ return related.find({ ...query, filter: { ...query.filter, [foreignKey]: `$eq:${ownerId}` } }, { ...config, filterableColumns: { ...config.filterableColumns, [foreignKey]: true } });
198
+ }
199
+ const ids = await this.pivotRelatedIds(ownerId, relation);
200
+ if (ids.length === 0) {
201
+ return emptyPage(query, config);
202
+ }
203
+ return related.find({ ...query, filter: { ...query.filter, id: `$in:${ids.join(',')}` } }, { ...config, filterableColumns: { ...config.filterableColumns, id: true } });
204
+ }
205
+ async associate(ownerId, relation, relatedId) {
206
+ const foreignKey = relation.foreignKey;
207
+ if (!foreignKey) {
208
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
209
+ }
210
+ const related = this.requireRelated(relation.relatedResource);
211
+ await related.delegate.update({ where: { id: relatedId }, data: { [foreignKey]: ownerId } });
212
+ }
213
+ async dissociate(_ownerId, relation, relatedId) {
214
+ const foreignKey = relation.foreignKey;
215
+ if (!foreignKey) {
216
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
217
+ }
218
+ const related = this.requireRelated(relation.relatedResource);
219
+ await related.delegate.update({ where: { id: relatedId }, data: { [foreignKey]: null } });
220
+ }
221
+ async attach(ownerId, relation, relatedId, pivot) {
222
+ const raw = this.requireRaw();
223
+ if (!relation.pivotTable) {
224
+ throw new Error(`BelongsToMany relation ${relation.name} needs pivotTable`);
225
+ }
226
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
227
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
228
+ const extra = pivot ? Object.entries(pivot) : [];
229
+ const columns = [pivotForeignKey, pivotRelatedKey, ...extra.map(([key]) => key)];
230
+ const values = [ownerId, relatedId, ...extra.map(([, value]) => value)];
231
+ const placeholders = columns.map(() => '?').join(', ');
232
+ try {
233
+ await raw.executeRawUnsafe(`insert into ${relation.pivotTable} (${columns.join(', ')}) values (${placeholders})`, ...values);
234
+ }
235
+ catch {
236
+ }
237
+ }
238
+ async detach(ownerId, relation, relatedId) {
239
+ const raw = this.requireRaw();
240
+ if (!relation.pivotTable) {
241
+ throw new Error(`BelongsToMany relation ${relation.name} needs pivotTable`);
242
+ }
243
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
244
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
245
+ await raw.executeRawUnsafe(`delete from ${relation.pivotTable} where ${pivotForeignKey} = ? and ${pivotRelatedKey} = ?`, ownerId, relatedId);
246
+ }
247
+ async searchRelatedOptions(meta, query = {}) {
248
+ const related = this.requireRelated(meta.resource);
249
+ const searchBy = meta.searchBy ?? [meta.titleAttribute];
250
+ const result = await related.find({ search: query.search, searchBy, limit: query.limit ?? 25, page: 1 }, { sortableColumns: [meta.titleAttribute, 'id'], searchableColumns: searchBy });
251
+ return result.data.map((row) => ({
252
+ value: String(row.id),
253
+ label: String(row[meta.titleAttribute] ?? row.id),
254
+ }));
255
+ }
256
+ async pivotRelatedIds(ownerId, relation) {
257
+ const raw = this.requireRaw();
258
+ if (!relation.pivotTable) {
259
+ throw new Error(`BelongsToMany relation ${relation.name} needs pivotTable`);
260
+ }
261
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
262
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
263
+ const rows = await raw.queryRawUnsafe(`select ${pivotRelatedKey} as related_id from ${relation.pivotTable} where ${pivotForeignKey} = ?`, ownerId);
264
+ return rows.map((row) => String(row.related_id));
265
+ }
266
+ requireRaw() {
267
+ if (!this.options.raw) {
268
+ throw new Error(`Resource ${this.resourceId} needs the \`raw\` option (PrismaClient's own $queryRawUnsafe/$executeRawUnsafe) for belongs-to-many pivot-table operations`);
269
+ }
270
+ return this.options.raw;
271
+ }
272
+ requireRelated(slug) {
273
+ if (slug === this.resourceId) {
274
+ return this;
275
+ }
276
+ const related = this.options.resolveRelated?.(slug);
277
+ if (!related) {
278
+ throw new Error(`Related repository for ${slug} not registered`);
279
+ }
280
+ return related;
281
+ }
282
+ }
283
+ export function createPrismaResource(options) {
284
+ return new PrismaResource(options.id, options.delegate, options.properties, options.listQueryConfig, {
285
+ relations: options.relations,
286
+ resolveRelated: options.resolveRelated,
287
+ softDeleteField: options.softDeleteField,
288
+ raw: options.raw,
289
+ });
290
+ }
291
+ export function createPrismaResourceFromModel(resource, delegate, options = {}) {
292
+ const columnNames = typeof resource.table === 'function'
293
+ ? resource
294
+ .table(Table.make())
295
+ .toSchema()
296
+ .columns.map((column) => String(column.name ?? ''))
297
+ .filter(Boolean)
298
+ : [];
299
+ const properties = options.properties ??
300
+ (columnNames.length
301
+ ? columnNames.map((name) => new PrismaProperty(name, 'mixed', { id: name === 'id' }))
302
+ : [new PrismaProperty('id', 'string', { id: true })]);
303
+ const listQueryConfig = options.listQueryConfig ??
304
+ resolveListQueryConfig(resource, properties.map((property) => property.name()), undefined, properties);
305
+ return createPrismaResource({
306
+ id: options.id ?? resolveResourceSlug(resource),
307
+ delegate,
308
+ properties,
309
+ listQueryConfig,
310
+ relations: options.relations ?? relationsFromResource(resource),
311
+ resolveRelated: options.resolveRelated,
312
+ softDeleteField: options.softDeleteField,
313
+ raw: options.raw,
314
+ });
315
+ }
316
+ export const PrismaAdapter = {
317
+ forRoot() {
318
+ return { name: '@nestjs-dash/prisma' };
319
+ },
320
+ createResource: createPrismaResource,
321
+ };
5
322
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAqB,CAAC;AAE3D,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,8 @@
1
1
  {
2
2
  "name": "@nestjs-dash/prisma",
3
- "version": "0.0.1",
4
- "description": "Prisma adapter for nestjs-dash (ResourceAdapter/DatabaseAdapter implementation)",
3
+ "version": "0.1.1",
4
+ "description": "Prisma adapter for NestJS Dash (ResourceAdapter/DatabaseAdapter implementation)",
5
5
  "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/nestjs-dash/prisma.git"
9
- },
10
- "bugs": {
11
- "url": "https://github.com/nestjs-dash/prisma/issues"
12
- },
13
- "homepage": "https://github.com/nestjs-dash/prisma#readme",
14
6
  "files": [
15
7
  "dist"
16
8
  ],
@@ -22,9 +14,16 @@
22
14
  }
23
15
  },
24
16
  "publishConfig": {
25
- "access": "public",
26
- "registry": "https://registry.npmjs.org/",
27
- "tag": "latest"
17
+ "access": "public"
18
+ },
19
+ "dependencies": {
20
+ "@nestjs-dash/adapter": "0.1.1",
21
+ "@nestjs-dash/core": "0.1.1"
22
+ },
23
+ "devDependencies": {
24
+ "@nestjs-dash/typescript-config": "0.1.0",
25
+ "typescript": "6.0.3",
26
+ "vitest": "^5.0.0"
28
27
  },
29
28
  "scripts": {
30
29
  "build": "tsc -p tsconfig.json",
@@ -33,17 +32,6 @@
33
32
  "lint": "oxlint src",
34
33
  "test": "vitest run",
35
34
  "test:coverage": "vitest run --coverage",
36
- "release": "release-it",
37
35
  "dev": "tsc -p tsconfig.json --watch"
38
- },
39
- "devDependencies": {
40
- "@types/node": "^26.5.1",
41
- "@vitest/coverage-v8": "5.0.0",
42
- "oxfmt": "^0.67.0",
43
- "oxlint": "^1.82.0",
44
- "typescript": "7.0.2",
45
- "vitest": "^5.0.0",
46
- "release-it": "^21.0.2",
47
- "@release-it/conventional-changelog": "^12.0.0"
48
36
  }
49
37
  }
package/README.md DELETED
@@ -1 +0,0 @@
1
- # @nestjs-dash/prisma