@nestjs-dash/typeorm 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.
@@ -0,0 +1,3 @@
1
+ export { Filterable, getEntityColumnMeta, getSoftDeleteField, normalizeSortDirection, Searchable, SoftDeletable, Sortable, type EntityColumnMeta, type EntityConstructor, type SortDirectionInput } from '@nestjs-dash/adapter';
2
+ export { listQueryConfigFromEntity } from '@nestjs-dash/core';
3
+ //# sourceMappingURL=entity-decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-decorators.d.ts","sourceRoot":"","sources":["../src/entity-decorators.ts"],"names":[],"mappings":"AASA,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,QAAQ,EACR,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Filterable, getEntityColumnMeta, getSoftDeleteField, normalizeSortDirection, Searchable, SoftDeletable, Sortable } from '@nestjs-dash/adapter';
2
+ export { listQueryConfigFromEntity } from '@nestjs-dash/core';
3
+ //# sourceMappingURL=entity-decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-decorators.js","sourceRoot":"","sources":["../src/entity-decorators.ts"],"names":[],"mappings":"AASA,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,QAAQ,EAIX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,89 @@
1
- export {};
1
+ import type { BelongsToMeta, FilterOperator, FindOneOptions, ListQuery, ListQueryConfig, Paginated, PropertyAdapter, PropertyType, RecordData, RelationCapableAdapter, RelationDefinition, RelationOption, ResourceAdapter } from '@nestjs-dash/adapter';
2
+ import { type ResourceClass } from '@nestjs-dash/core';
3
+ import { Between, Equal, ILike, In, IsNull, LessThan, LessThanOrEqual, Like, MoreThan, MoreThanOrEqual, Not, type EntityTarget, type ObjectLiteral, type Repository, type SelectQueryBuilder } from 'typeorm';
4
+ export type TypeOrmConnectionLike = {
5
+ getRepository<Entity extends ObjectLiteral>(target: EntityTarget<Entity>): Repository<Entity>;
6
+ };
7
+ export declare class TypeOrmProperty implements PropertyAdapter {
8
+ private readonly propertyName;
9
+ private readonly propertyType;
10
+ private readonly flags;
11
+ constructor(propertyName: string, propertyType: PropertyType, flags?: {
12
+ id?: boolean;
13
+ editable?: boolean;
14
+ sortable?: boolean;
15
+ });
16
+ name(): string;
17
+ type(): PropertyType;
18
+ isId(): boolean;
19
+ isEditable(): boolean;
20
+ isSortable(): boolean;
21
+ }
22
+ export declare class TypeOrmResource<T extends ObjectLiteral> implements ResourceAdapter, RelationCapableAdapter {
23
+ private readonly resourceId;
24
+ private readonly repository;
25
+ private readonly props;
26
+ private readonly defaultConfig;
27
+ private readonly options;
28
+ constructor(resourceId: string, repository: Repository<T>, props: PropertyAdapter[], defaultConfig: ListQueryConfig, options?: {
29
+ relations?: RelationDefinition[];
30
+ resolveRepository?: (slug: string) => Repository<ObjectLiteral> | undefined;
31
+ });
32
+ id(): string;
33
+ properties(): PropertyAdapter[];
34
+ find(query: ListQuery, config?: ListQueryConfig): Promise<Paginated<RecordData>>;
35
+ findOne(id: string, options?: FindOneOptions): Promise<RecordData | null>;
36
+ create(data: RecordData): Promise<RecordData>;
37
+ update(id: string, data: RecordData): Promise<RecordData>;
38
+ delete(id: string): Promise<void>;
39
+ supportsSoftDelete(): boolean;
40
+ deletedAtField(): string;
41
+ restore(id: string): Promise<void>;
42
+ findRelated(ownerId: string, relation: RelationDefinition, query: ListQuery): Promise<Paginated<RecordData>>;
43
+ associate(ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
44
+ dissociate(_ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
45
+ attach(ownerId: string, relation: RelationDefinition, relatedId: string, pivot?: RecordData): Promise<void>;
46
+ detach(ownerId: string, relation: RelationDefinition, relatedId: string): Promise<void>;
47
+ searchRelatedOptions(meta: BelongsToMeta, query?: {
48
+ search?: string;
49
+ limit?: number;
50
+ }): Promise<RelationOption[]>;
51
+ private requireRelatedRepo;
52
+ }
53
+ export declare function createTypeOrmResource<T extends ObjectLiteral>(options: {
54
+ id: string;
55
+ repository: Repository<T>;
56
+ properties: PropertyAdapter[];
57
+ listQueryConfig: ListQueryConfig;
58
+ relations?: RelationDefinition[];
59
+ resolveRepository?: (slug: string) => Repository<ObjectLiteral> | undefined;
60
+ }): TypeOrmResource<T>;
61
+ export declare function propertiesFromRepository<T extends ObjectLiteral>(repository: Repository<T>): TypeOrmProperty[];
62
+ export type CreateTypeOrmResourceFromModelOptions<_T extends ObjectLiteral> = {
63
+ properties?: TypeOrmProperty[];
64
+ listQueryConfig?: ListQueryConfig;
65
+ relations?: RelationDefinition[];
66
+ resolveRepository?: (slug: string) => Repository<ObjectLiteral> | undefined;
67
+ id?: string;
68
+ };
69
+ export declare function createTypeOrmResourceFromModel<T extends ObjectLiteral>(resource: ResourceClass, repository: Repository<T>, options?: CreateTypeOrmResourceFromModelOptions<T>): TypeOrmResource<T>;
70
+ export declare function bindTypeOrmResourcesFromModels(resources: ResourceClass[], connection: TypeOrmConnectionLike): void;
71
+ export declare function paginateResource<T extends ObjectLiteral>(query: ListQuery, repoOrQb: Repository<T> | SelectQueryBuilder<T>, config: ListQueryConfig): Promise<Paginated<RecordData>>;
72
+ export declare function isRepository<T extends ObjectLiteral>(value: Repository<T> | SelectQueryBuilder<T>): value is Repository<T>;
73
+ export declare function applySearch<T extends ObjectLiteral>(qb: SelectQueryBuilder<T>, alias: string, query: ListQuery, config: ListQueryConfig): void;
74
+ export declare function applyFilters<T extends ObjectLiteral>(qb: SelectQueryBuilder<T>, alias: string, query: ListQuery, config: ListQueryConfig): void;
75
+ export declare function buildFilterWhere(alias: string, column: string, expression: string, allowed: FilterOperator[] | true): {
76
+ clause: string;
77
+ params: Record<string, unknown>;
78
+ } | null;
79
+ export declare function applySort<T extends ObjectLiteral>(qb: SelectQueryBuilder<T>, alias: string, query: ListQuery, config: ListQueryConfig): void;
80
+ export declare const TypeOrmAdapter: {
81
+ forRoot(): {
82
+ name: string;
83
+ };
84
+ createResource: typeof createTypeOrmResource;
85
+ };
86
+ export { Filterable, getEntityColumnMeta, listQueryConfigFromEntity, normalizeSortDirection, Searchable, Sortable, type EntityColumnMeta, type SortDirectionInput } from './entity-decorators.js';
87
+ export { relationsFromResource } from '@nestjs-dash/core';
88
+ export { Between, Equal, ILike, In, IsNull, LessThan, LessThanOrEqual, Like, MoreThan, MoreThanOrEqual, Not, type EntityTarget };
2
89
  //# 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":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,532 @@
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, } from '@nestjs-dash/core';
2
+ import { Between, Equal, ILike, In, IsNull, LessThan, LessThanOrEqual, Like, MoreThan, MoreThanOrEqual, Not, } from 'typeorm';
3
+ import { listQueryConfigFromEntity } from './entity-decorators.js';
4
+ export class TypeOrmProperty {
5
+ constructor(propertyName, propertyType, flags = {}) {
6
+ this.propertyName = propertyName;
7
+ this.propertyType = propertyType;
8
+ this.flags = flags;
9
+ }
10
+ name() {
11
+ return this.propertyName;
12
+ }
13
+ type() {
14
+ return this.propertyType;
15
+ }
16
+ isId() {
17
+ return this.flags.id ?? false;
18
+ }
19
+ isEditable() {
20
+ return this.flags.editable ?? !this.isId();
21
+ }
22
+ isSortable() {
23
+ return this.flags.sortable ?? true;
24
+ }
25
+ }
26
+ export class TypeOrmResource {
27
+ constructor(resourceId, repository, props, defaultConfig, options = {}) {
28
+ this.resourceId = resourceId;
29
+ this.repository = repository;
30
+ this.props = props;
31
+ this.defaultConfig = defaultConfig;
32
+ this.options = options;
33
+ }
34
+ id() {
35
+ return this.resourceId;
36
+ }
37
+ properties() {
38
+ return this.props;
39
+ }
40
+ find(query, config) {
41
+ return paginateResource(query, this.repository, {
42
+ ...this.defaultConfig,
43
+ ...config,
44
+ sortableColumns: config?.sortableColumns ?? this.defaultConfig.sortableColumns,
45
+ });
46
+ }
47
+ async findOne(id, options) {
48
+ const relations = normalizeFindRelations(options?.relations);
49
+ const record = await findOneCompatible(this.repository, id, relations);
50
+ return record ?? null;
51
+ }
52
+ async create(data) {
53
+ const entity = this.repository.create(data);
54
+ const saved = await this.repository.save(entity);
55
+ return saved;
56
+ }
57
+ async update(id, data) {
58
+ await this.repository.update({ id }, data);
59
+ const updated = await this.findOne(id);
60
+ if (!updated) {
61
+ throw new Error(`Record ${id} not found`);
62
+ }
63
+ return updated;
64
+ }
65
+ async delete(id) {
66
+ if (this.supportsSoftDelete()) {
67
+ await this.repository.softDelete({ id });
68
+ return;
69
+ }
70
+ await this.repository.delete({ id });
71
+ }
72
+ supportsSoftDelete() {
73
+ return this.repository.metadata.deleteDateColumn != null;
74
+ }
75
+ deletedAtField() {
76
+ const column = this.repository.metadata.deleteDateColumn;
77
+ if (!column) {
78
+ throw new Error(`Resource ${this.resourceId} has no delete-date column`);
79
+ }
80
+ return column.propertyName;
81
+ }
82
+ async restore(id) {
83
+ if (!this.supportsSoftDelete()) {
84
+ throw new Error(`Resource ${this.resourceId} has no delete-date column to restore`);
85
+ }
86
+ await this.repository.restore({ id });
87
+ }
88
+ async findRelated(ownerId, relation, query) {
89
+ const relatedRepo = this.requireRelatedRepo(relation.relatedResource);
90
+ const config = relation.listQueryConfig ?? {
91
+ sortableColumns: ['id'],
92
+ defaultLimit: 20,
93
+ };
94
+ if (relation.type === 'has-many') {
95
+ const foreignKey = relation.foreignKey;
96
+ if (!foreignKey) {
97
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
98
+ }
99
+ return paginateResource({
100
+ ...query,
101
+ filter: {
102
+ ...query.filter,
103
+ [foreignKey]: `$eq:${ownerId}`,
104
+ },
105
+ }, relatedRepo, {
106
+ ...config,
107
+ filterableColumns: {
108
+ ...config.filterableColumns,
109
+ [foreignKey]: true,
110
+ },
111
+ });
112
+ }
113
+ const ownerRelation = relation.ownerRelationProperty ?? relation.name;
114
+ if (!relation.relatedRelationProperty) {
115
+ const viaOwner = this.repository
116
+ .createQueryBuilder('owner')
117
+ .leftJoinAndSelect(`owner.${ownerRelation}`, 'entity')
118
+ .where('owner.id = :ownerId', { ownerId });
119
+ const owner = await viaOwner.getOne();
120
+ const related = (owner?.[ownerRelation] ??
121
+ []);
122
+ const ids = related.map((row) => String(row.id));
123
+ if (ids.length === 0) {
124
+ return emptyPage(query, config);
125
+ }
126
+ return paginateResource({
127
+ ...query,
128
+ filter: {
129
+ ...query.filter,
130
+ id: `$in:${ids.join(',')}`,
131
+ },
132
+ }, relatedRepo, {
133
+ ...config,
134
+ filterableColumns: {
135
+ ...config.filterableColumns,
136
+ id: true,
137
+ },
138
+ });
139
+ }
140
+ const qb = relatedRepo
141
+ .createQueryBuilder('entity')
142
+ .innerJoin(`entity.${relation.relatedRelationProperty}`, 'owner', 'owner.id = :ownerId', {
143
+ ownerId,
144
+ });
145
+ return paginateResource(query, qb, config);
146
+ }
147
+ async associate(ownerId, relation, relatedId) {
148
+ const foreignKey = relation.foreignKey;
149
+ if (!foreignKey) {
150
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
151
+ }
152
+ const relatedRepo = this.requireRelatedRepo(relation.relatedResource);
153
+ await relatedRepo.update({ id: relatedId }, {
154
+ [foreignKey]: ownerId,
155
+ });
156
+ }
157
+ async dissociate(_ownerId, relation, relatedId) {
158
+ const foreignKey = relation.foreignKey;
159
+ if (!foreignKey) {
160
+ throw new Error(`HasMany relation ${relation.name} needs foreignKey`);
161
+ }
162
+ const relatedRepo = this.requireRelatedRepo(relation.relatedResource);
163
+ await relatedRepo.update({ id: relatedId }, {
164
+ [foreignKey]: null,
165
+ });
166
+ }
167
+ async attach(ownerId, relation, relatedId, pivot) {
168
+ const ownerRelation = relation.ownerRelationProperty ?? relation.name;
169
+ if (relation.pivotTable && pivot && Object.keys(pivot).length > 0) {
170
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
171
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
172
+ await this.repository.manager
173
+ .createQueryBuilder()
174
+ .insert()
175
+ .into(relation.pivotTable)
176
+ .values({
177
+ [pivotForeignKey]: ownerId,
178
+ [pivotRelatedKey]: relatedId,
179
+ ...pivot,
180
+ })
181
+ .orIgnore()
182
+ .execute();
183
+ return;
184
+ }
185
+ await this.repository.createQueryBuilder().relation(ownerRelation).of(ownerId).add(relatedId);
186
+ }
187
+ async detach(ownerId, relation, relatedId) {
188
+ const ownerRelation = relation.ownerRelationProperty ?? relation.name;
189
+ if (relation.pivotTable) {
190
+ const pivotForeignKey = relation.pivotForeignKey ?? `${singularize(this.resourceId)}Id`;
191
+ const pivotRelatedKey = relation.pivotRelatedKey ?? `${singularize(relation.relatedResource)}Id`;
192
+ await this.repository.manager
193
+ .createQueryBuilder()
194
+ .delete()
195
+ .from(relation.pivotTable)
196
+ .where(`${pivotForeignKey} = :ownerId AND ${pivotRelatedKey} = :relatedId`, {
197
+ ownerId,
198
+ relatedId,
199
+ })
200
+ .execute();
201
+ return;
202
+ }
203
+ await this.repository
204
+ .createQueryBuilder()
205
+ .relation(ownerRelation)
206
+ .of(ownerId)
207
+ .remove(relatedId);
208
+ }
209
+ async searchRelatedOptions(meta, query = {}) {
210
+ const relatedRepo = this.requireRelatedRepo(meta.resource);
211
+ const searchBy = meta.searchBy ?? [meta.titleAttribute];
212
+ const result = await paginateResource({
213
+ search: query.search,
214
+ searchBy,
215
+ limit: query.limit ?? 25,
216
+ page: 1,
217
+ }, relatedRepo, {
218
+ sortableColumns: [meta.titleAttribute, 'id'],
219
+ searchableColumns: searchBy,
220
+ defaultSortBy: [[meta.titleAttribute, 'ASC']],
221
+ });
222
+ return result.data.map((row) => ({
223
+ value: String(row.id),
224
+ label: String(row[meta.titleAttribute] ?? row.id),
225
+ }));
226
+ }
227
+ requireRelatedRepo(slug) {
228
+ if (slug === this.resourceId) {
229
+ return this.repository;
230
+ }
231
+ const repo = this.options.resolveRepository?.(slug);
232
+ if (!repo) {
233
+ throw new Error(`Related repository for ${slug} not registered`);
234
+ }
235
+ return repo;
236
+ }
237
+ }
238
+ function singularize(value) {
239
+ return value.endsWith('s') ? value.slice(0, -1) : value;
240
+ }
241
+ function normalizeFindRelations(relations) {
242
+ if (relations == null) {
243
+ return undefined;
244
+ }
245
+ if (Array.isArray(relations)) {
246
+ if (relations.length === 0) {
247
+ return undefined;
248
+ }
249
+ return Object.fromEntries(relations.map((name) => [name, true]));
250
+ }
251
+ const entries = Object.entries(relations).map(([key, value]) => [
252
+ key,
253
+ value === true || (value != null && typeof value === 'object'),
254
+ ]);
255
+ return Object.fromEntries(entries);
256
+ }
257
+ function isLegacyConnectionRepository(repository) {
258
+ return typeof repository.findOneBy !== 'function';
259
+ }
260
+ async function findOneCompatible(repository, id, relations) {
261
+ if (!isLegacyConnectionRepository(repository)) {
262
+ return repository.findOne({
263
+ where: { id },
264
+ relations: relations,
265
+ });
266
+ }
267
+ const legacyFindOne = repository.findOne;
268
+ return legacyFindOne(id, relations ? { relations: Object.keys(relations) } : undefined);
269
+ }
270
+ function emptyPage(query, config) {
271
+ const limit = query.limit ?? config.defaultLimit ?? 20;
272
+ return {
273
+ data: [],
274
+ meta: {
275
+ itemsPerPage: limit,
276
+ totalItems: 0,
277
+ currentPage: query.page ?? 1,
278
+ totalPages: 1,
279
+ sortBy: query.sortBy ?? config.defaultSortBy ?? [],
280
+ },
281
+ };
282
+ }
283
+ export function createTypeOrmResource(options) {
284
+ return new TypeOrmResource(options.id, options.repository, options.properties, options.listQueryConfig, {
285
+ relations: options.relations,
286
+ resolveRepository: options.resolveRepository,
287
+ });
288
+ }
289
+ function mapColumnPropertyType(column) {
290
+ if (column.relationMetadata) {
291
+ return 'reference';
292
+ }
293
+ const raw = column.type;
294
+ const typeName = typeof raw === 'string'
295
+ ? raw.toLowerCase()
296
+ : typeof raw === 'function'
297
+ ? raw.name.toLowerCase()
298
+ : String(raw).toLowerCase();
299
+ if (typeName.includes('bool') || typeName === 'bit') {
300
+ return 'boolean';
301
+ }
302
+ if (typeName.includes('int') ||
303
+ typeName.includes('decimal') ||
304
+ typeName.includes('numeric') ||
305
+ typeName.includes('float') ||
306
+ typeName.includes('double') ||
307
+ typeName === 'real' ||
308
+ typeName === 'money') {
309
+ return 'number';
310
+ }
311
+ if (typeName === 'date') {
312
+ return 'date';
313
+ }
314
+ if (typeName.includes('timestamp') ||
315
+ typeName.includes('datetime') ||
316
+ typeName === 'timestamptz') {
317
+ return 'datetime';
318
+ }
319
+ if (typeName.includes('json') || typeName === 'simple-json' || typeName === 'simple-array') {
320
+ return 'json';
321
+ }
322
+ return 'string';
323
+ }
324
+ export function propertiesFromRepository(repository) {
325
+ return repository.metadata.columns.map((column) => {
326
+ const isId = column.isPrimary;
327
+ return new TypeOrmProperty(column.propertyName, mapColumnPropertyType(column), {
328
+ id: isId,
329
+ editable: !isId && !column.isCreateDate && !column.isUpdateDate && !column.isDeleteDate,
330
+ sortable: true,
331
+ });
332
+ });
333
+ }
334
+ function listQueryConfigForResource(resource, model, properties) {
335
+ return resolveListQueryConfig(resource, properties.map((property) => property.name()), (tableDefaults, columnCapabilities) => listQueryConfigFromEntity(model, tableDefaults, columnCapabilities, properties), properties);
336
+ }
337
+ export function createTypeOrmResourceFromModel(resource, repository, options = {}) {
338
+ const model = resource.model;
339
+ if (model == null) {
340
+ throw new Error(`Resource ${resource.name} is missing static model for TypeORM auto-bind`);
341
+ }
342
+ const properties = options.properties ?? propertiesFromRepository(repository);
343
+ const listQueryConfig = options.listQueryConfig ??
344
+ listQueryConfigForResource(resource, model, properties);
345
+ const relations = options.relations ?? relationsFromResource(resource);
346
+ return createTypeOrmResource({
347
+ id: options.id ?? resolveResourceSlug(resource),
348
+ repository,
349
+ properties,
350
+ listQueryConfig,
351
+ relations: relations.length ? relations : undefined,
352
+ resolveRepository: options.resolveRepository,
353
+ });
354
+ }
355
+ export function bindTypeOrmResourcesFromModels(resources, connection) {
356
+ const bySlug = new Map();
357
+ for (const resource of resources) {
358
+ bySlug.set(resolveResourceSlug(resource), resource);
359
+ }
360
+ const resolveRepository = (slug) => {
361
+ const resource = bySlug.get(slug);
362
+ const model = resource?.model;
363
+ if (!model) {
364
+ return undefined;
365
+ }
366
+ try {
367
+ return connection.getRepository(model);
368
+ }
369
+ catch {
370
+ return undefined;
371
+ }
372
+ };
373
+ for (const resource of resources) {
374
+ if (resource.adapter) {
375
+ continue;
376
+ }
377
+ const model = resource.model;
378
+ if (!model) {
379
+ continue;
380
+ }
381
+ const repository = connection.getRepository(model);
382
+ resource.adapter = createTypeOrmResourceFromModel(resource, repository, {
383
+ resolveRepository,
384
+ });
385
+ }
386
+ }
387
+ export async function paginateResource(query, repoOrQb, config) {
388
+ const qb = isRepository(repoOrQb) ? repoOrQb.createQueryBuilder('entity') : repoOrQb;
389
+ const alias = qb.alias;
390
+ const defaultLimit = config.defaultLimit ?? 20;
391
+ const maxLimit = config.maxLimit ?? 100;
392
+ const limit = Math.min(Math.max(query.limit ?? defaultLimit, 1), maxLimit);
393
+ const page = Math.max(query.page ?? 1, 1);
394
+ if (config.select?.length) {
395
+ qb.select(config.select.map((column) => `${alias}.${column}`));
396
+ }
397
+ if (Array.isArray(config.relations)) {
398
+ for (const relation of config.relations) {
399
+ qb.leftJoinAndSelect(`${alias}.${relation}`, relation);
400
+ }
401
+ }
402
+ const deleteDateColumn = qb.expressionMap.mainAlias?.metadata?.deleteDateColumn;
403
+ if (deleteDateColumn && !query.withDeleted) {
404
+ qb.andWhere(`${alias}.${deleteDateColumn.propertyName} IS NULL`);
405
+ }
406
+ applySearch(qb, alias, query, config);
407
+ applyFilters(qb, alias, query, config);
408
+ applySort(qb, alias, query, config);
409
+ const totalItems = await qb.getCount();
410
+ qb.skip((page - 1) * limit).take(limit);
411
+ const entities = await qb.getMany();
412
+ const sortBy = query.sortBy?.length ? query.sortBy : (config.defaultSortBy ?? []);
413
+ return {
414
+ data: entities,
415
+ meta: {
416
+ itemsPerPage: limit,
417
+ totalItems,
418
+ currentPage: page,
419
+ totalPages: Math.max(Math.ceil(totalItems / limit), 1),
420
+ sortBy,
421
+ search: query.search,
422
+ filter: query.filter,
423
+ },
424
+ };
425
+ }
426
+ export function isRepository(value) {
427
+ return 'metadata' in value && typeof value.createQueryBuilder === 'function';
428
+ }
429
+ export function applySearch(qb, alias, query, config) {
430
+ const search = query.search?.trim();
431
+ if (!search) {
432
+ return;
433
+ }
434
+ const columns = query.searchBy?.length ? query.searchBy : (config.searchableColumns ?? []);
435
+ if (columns.length === 0) {
436
+ return;
437
+ }
438
+ const parts = columns.map((column, index) => {
439
+ const param = `search${index}`;
440
+ qb.setParameter(param, `%${search.toLowerCase()}%`);
441
+ return `LOWER(CAST(${alias}.${column} AS TEXT)) LIKE :${param}`;
442
+ });
443
+ qb.andWhere(`(${parts.join(' OR ')})`);
444
+ }
445
+ export function applyFilters(qb, alias, query, config) {
446
+ if (!query.filter) {
447
+ return;
448
+ }
449
+ for (const [column, raw] of Object.entries(query.filter)) {
450
+ const allowed = config.filterableColumns?.[column];
451
+ if (!allowed) {
452
+ continue;
453
+ }
454
+ const values = Array.isArray(raw) ? raw : [raw];
455
+ for (const expression of values) {
456
+ const where = buildFilterWhere(alias, column, expression, allowed);
457
+ if (where) {
458
+ qb.andWhere(where.clause, where.params);
459
+ }
460
+ }
461
+ }
462
+ }
463
+ export function buildFilterWhere(alias, column, expression, allowed) {
464
+ const [operator, ...rest] = expression.split(':');
465
+ const value = rest.join(':');
466
+ const op = (operator?.startsWith('$') ? operator : '$eq');
467
+ if (allowed !== true && !allowed.includes(op)) {
468
+ return null;
469
+ }
470
+ const path = `${alias}.${column}`;
471
+ const param = `f_${column}_${op.replace('$', '')}`;
472
+ switch (op) {
473
+ case '$eq':
474
+ return { clause: `${path} = :${param}`, params: { [param]: value } };
475
+ case '$not':
476
+ return { clause: `${path} != :${param}`, params: { [param]: value } };
477
+ case '$null':
478
+ return { clause: `${path} IS NULL`, params: {} };
479
+ case '$in':
480
+ return {
481
+ clause: `${path} IN (:...${param})`,
482
+ params: { [param]: value.split(',') },
483
+ };
484
+ case '$gt':
485
+ return { clause: `${path} > :${param}`, params: { [param]: value } };
486
+ case '$gte':
487
+ return { clause: `${path} >= :${param}`, params: { [param]: value } };
488
+ case '$lt':
489
+ return { clause: `${path} < :${param}`, params: { [param]: value } };
490
+ case '$lte':
491
+ return { clause: `${path} <= :${param}`, params: { [param]: value } };
492
+ case '$btw': {
493
+ const [min, max] = value.split(',');
494
+ return {
495
+ clause: `${path} BETWEEN :${param}Min AND :${param}Max`,
496
+ params: { [`${param}Min`]: min, [`${param}Max`]: max },
497
+ };
498
+ }
499
+ case '$ilike':
500
+ case '$contains':
501
+ return {
502
+ clause: `LOWER(CAST(${path} AS TEXT)) LIKE :${param}`,
503
+ params: { [param]: `%${value.toLowerCase()}%` },
504
+ };
505
+ case '$sw':
506
+ return {
507
+ clause: `LOWER(CAST(${path} AS TEXT)) LIKE :${param}`,
508
+ params: { [param]: `${value.toLowerCase()}%` },
509
+ };
510
+ default:
511
+ return { clause: `${path} = :${param}`, params: { [param]: expression } };
512
+ }
513
+ }
514
+ export function applySort(qb, alias, query, config) {
515
+ const sortBy = query.sortBy?.length ? query.sortBy : (config.defaultSortBy ?? []);
516
+ for (const [column, direction] of sortBy) {
517
+ if (!config.sortableColumns.includes(column)) {
518
+ continue;
519
+ }
520
+ qb.addOrderBy(`${alias}.${column}`, direction);
521
+ }
522
+ }
523
+ export const TypeOrmAdapter = {
524
+ forRoot() {
525
+ return { name: '@nestjs-dash/typeorm' };
526
+ },
527
+ createResource: createTypeOrmResource,
528
+ };
529
+ export { Filterable, getEntityColumnMeta, listQueryConfigFromEntity, normalizeSortDirection, Searchable, Sortable } from './entity-decorators.js';
530
+ export { relationsFromResource } from '@nestjs-dash/core';
531
+ export { Between, Equal, ILike, In, IsNull, LessThan, LessThanOrEqual, Like, MoreThan, MoreThanOrEqual, Not };
5
532
  //# 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/typeorm",
3
- "version": "0.0.1",
4
- "description": "TypeORM adapter for nestjs-dash (ResourceAdapter/DatabaseAdapter implementation + entity decorators)",
3
+ "version": "0.1.1",
4
+ "description": "TypeORM adapter for NestJS Dash (ResourceAdapter/DatabaseAdapter implementation + entity decorators)",
5
5
  "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/nestjs-dash/typeorm.git"
9
- },
10
- "bugs": {
11
- "url": "https://github.com/nestjs-dash/typeorm/issues"
12
- },
13
- "homepage": "https://github.com/nestjs-dash/typeorm#readme",
14
6
  "files": [
15
7
  "dist"
16
8
  ],
@@ -22,31 +14,18 @@
22
14
  }
23
15
  },
24
16
  "publishConfig": {
25
- "access": "public",
26
- "registry": "https://registry.npmjs.org/",
27
- "tag": "latest"
17
+ "access": "public"
28
18
  },
29
- "scripts": {
30
- "build": "tsc -p tsconfig.json",
31
- "check-types": "tsc -p tsconfig.json --noEmit",
32
- "format": "oxfmt",
33
- "lint": "oxlint src",
34
- "test": "vitest run",
35
- "test:coverage": "vitest run --coverage",
36
- "release": "release-it",
37
- "dev": "tsc -p tsconfig.json --watch"
19
+ "dependencies": {
20
+ "@nestjs-dash/adapter": "0.1.1",
21
+ "@nestjs-dash/core": "0.1.1"
38
22
  },
39
23
  "devDependencies": {
40
- "@types/node": "^26.5.1",
41
- "@vitest/coverage-v8": "5.0.0",
42
- "oxfmt": "^0.67.0",
43
- "oxlint": "^1.82.0",
24
+ "@nestjs-dash/typescript-config": "0.1.0",
44
25
  "reflect-metadata": "^0.2.2",
45
26
  "typeorm": "^1.1.1",
46
- "typescript": "7.0.2",
47
- "vitest": "^5.0.0",
48
- "release-it": "^21.0.2",
49
- "@release-it/conventional-changelog": "^12.0.0"
27
+ "typescript": "6.0.3",
28
+ "vitest": "^5.0.0"
50
29
  },
51
30
  "peerDependencies": {
52
31
  "reflect-metadata": "^0.2.2",
@@ -56,5 +35,14 @@
56
35
  "reflect-metadata": {
57
36
  "optional": true
58
37
  }
38
+ },
39
+ "scripts": {
40
+ "build": "tsc -p tsconfig.json",
41
+ "check-types": "tsc -p tsconfig.json --noEmit",
42
+ "format": "oxfmt",
43
+ "lint": "oxlint src",
44
+ "test": "vitest run",
45
+ "test:coverage": "vitest run --coverage",
46
+ "dev": "tsc -p tsconfig.json --watch"
59
47
  }
60
48
  }
package/README.md DELETED
@@ -1 +0,0 @@
1
- # @nestjs-dash/typeorm