@avytrix/nestjs-drizzle-crud 3.6.0 → 3.7.0
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/AGENT.md +17 -9
- package/CHANGELOG.md +47 -1
- package/README.md +56 -20
- package/dist/core/abstract/sql-base-crud.service.d.ts +13 -2
- package/dist/core/abstract/sql-base-crud.service.js +147 -41
- package/dist/core/abstract/sql-base-crud.service.js.map +1 -1
- package/dist/core/interfaces/drizzle-crud-config.interface.d.ts +16 -0
- package/dist/core/interfaces/sql-crud-config.interface.d.ts +9 -1
- package/dist/core/types/sql.types.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/drizzle-connection.d.ts +3 -1
- package/dist/modules/drizzle-connection.js +49 -2
- package/dist/modules/drizzle-connection.js.map +1 -1
- package/dist/modules/drizzle-crud.module.d.ts +2 -6
- package/dist/modules/drizzle-crud.module.js +28 -6
- package/dist/modules/drizzle-crud.module.js.map +1 -1
- package/package.json +10 -2
|
@@ -5,6 +5,7 @@ export interface DrizzleCrudConfig {
|
|
|
5
5
|
dialect: SqlDialect;
|
|
6
6
|
db?: any;
|
|
7
7
|
connectionString?: string;
|
|
8
|
+
connection?: DrizzleConnectionOptions;
|
|
8
9
|
schema?: Record<string, unknown>;
|
|
9
10
|
defaults?: {
|
|
10
11
|
softDelete?: boolean;
|
|
@@ -26,6 +27,21 @@ export interface DrizzleCrudConfig {
|
|
|
26
27
|
subscribers?: CrudSubscriber[];
|
|
27
28
|
};
|
|
28
29
|
}
|
|
30
|
+
export interface DrizzleConnectionOptions {
|
|
31
|
+
poolSize?: number;
|
|
32
|
+
idleTimeout?: number;
|
|
33
|
+
ssl?: boolean | "require" | "allow" | "prefer" | "verify-full" | Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
export interface DrizzleCrudOptionsFactory {
|
|
36
|
+
createDrizzleCrudOptions(): Promise<DrizzleCrudConfig> | DrizzleCrudConfig;
|
|
37
|
+
}
|
|
38
|
+
export interface DrizzleCrudAsyncOptions {
|
|
39
|
+
imports?: any[];
|
|
40
|
+
useFactory?: (...args: any[]) => Promise<DrizzleCrudConfig> | DrizzleCrudConfig;
|
|
41
|
+
inject?: any[];
|
|
42
|
+
useClass?: new (...args: any[]) => DrizzleCrudOptionsFactory;
|
|
43
|
+
useExisting?: new (...args: any[]) => DrizzleCrudOptionsFactory;
|
|
44
|
+
}
|
|
29
45
|
export type CrudFeatureConfig = Partial<Omit<SqlCrudConfig, "softDelete" | "timestamps" | "pagination" | "sql">> & {
|
|
30
46
|
softDelete?: Partial<NonNullable<SqlCrudConfig["softDelete"]>>;
|
|
31
47
|
timestamps?: Partial<NonNullable<SqlCrudConfig["timestamps"]>>;
|
|
@@ -28,7 +28,12 @@ export interface SelectTree {
|
|
|
28
28
|
}
|
|
29
29
|
export type RelationsConfig = Record<string, RelationConfig>;
|
|
30
30
|
export type SqlSearchMode = "ilike" | "fullText";
|
|
31
|
-
export
|
|
31
|
+
export type FullTextQueryMode = "plain" | "websearch";
|
|
32
|
+
export interface FullTextOptions {
|
|
33
|
+
language?: string;
|
|
34
|
+
queryMode?: FullTextQueryMode;
|
|
35
|
+
}
|
|
36
|
+
export interface SqlSearchOptions extends FullTextOptions {
|
|
32
37
|
term: string;
|
|
33
38
|
columns: string[];
|
|
34
39
|
mode?: SqlSearchMode;
|
|
@@ -85,3 +90,6 @@ export interface SqlOperationOptions {
|
|
|
85
90
|
expectedVersion?: number;
|
|
86
91
|
expectedVersions?: Record<string, number>;
|
|
87
92
|
}
|
|
93
|
+
export interface FullTextSearchOptions<FilterDto = any> extends SqlOperationOptions, FullTextOptions {
|
|
94
|
+
filters?: FilterDto;
|
|
95
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ export { SqlBaseCrudService } from "./core/abstract/sql-base-crud.service";
|
|
|
5
5
|
export { CrudContext } from "./core/context/crud-context";
|
|
6
6
|
export { CrudEventBus } from "./core/events/crud-event-bus";
|
|
7
7
|
export type { BulkOperationResult, ICrudService, OperationOptions, PaginationOptions, } from "./core/interfaces/crud-service.interface";
|
|
8
|
-
export type { CrudFeature, CrudFeatureConfig, DrizzleCrudConfig, } from "./core/interfaces/drizzle-crud-config.interface";
|
|
8
|
+
export type { CrudFeature, CrudFeatureConfig, DrizzleConnectionOptions, DrizzleCrudAsyncOptions, DrizzleCrudConfig, DrizzleCrudOptionsFactory, } from "./core/interfaces/drizzle-crud-config.interface";
|
|
9
9
|
export type { CrudEvent, CrudEventPhase, CrudSubscriber, CrudWriteOperation, } from "./core/interfaces/events.interface";
|
|
10
10
|
export type { BulkMode, CollectionFilter, CollectionQuantifier, ColumnFilter, CountByRow, CrudAllowlists, CrudFilter, CrudPage, CursorPage, CursorPaginationOptions, FilterGroup, FilterOperator, FilterOperators, FilterScalar, ParseCrudQueryOptions, ParsedCrudQuery, RelationCounts, SortInput, UncountedCrudPage, UpsertOptions, } from "./core/interfaces/query.interface";
|
|
11
11
|
export type { CrudContextValue, CrudScope, CrudScopeValues, } from "./core/interfaces/scope.interface";
|
|
12
|
-
export type { RelationConfig, RelationNode, RelationsConfig, RelationType, SelectTree, SqlCrudConfig, SqlOperationOptions, SqlSearchMode, SqlSearchOptions, } from "./core/interfaces/sql-crud-config.interface";
|
|
12
|
+
export type { FullTextOptions, FullTextQueryMode, FullTextSearchOptions, RelationConfig, RelationNode, RelationsConfig, RelationType, SelectTree, SqlCrudConfig, SqlOperationOptions, SqlSearchMode, SqlSearchOptions, } from "./core/interfaces/sql-crud-config.interface";
|
|
13
13
|
export { parseCrudQuery } from "./core/utils/query-parser";
|
|
14
14
|
export type { PrimaryKeyType, SortColumn, SortOrder, SqlDialect, } from "./core/types/sql.types";
|
|
15
15
|
export { CrudService } from "./decorators/crud-service.decorator";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAMA,2CAoBqB;AAnBpB,kGAAA,GAAG,OAAA;AACH,kGAAA,GAAG,OAAA;AACH,sGAAA,OAAO,OAAA;AACP,mGAAA,IAAI,OAAA;AACJ,iGAAA,EAAE,OAAA;AACF,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AACH,oGAAA,KAAK,OAAA;AACL,sGAAA,OAAO,OAAA;AACP,wGAAA,SAAS,OAAA;AACT,qGAAA,MAAM,OAAA;AACN,mGAAA,IAAI,OAAA;AACJ,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AACH,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AACH,yGAAA,UAAU,OAAA;AACV,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AASJ,gFAA4E;AAAnE,+HAAA,oBAAoB,OAAA;AAE7B,+EAA2E;AAAlE,2HAAA,kBAAkB,OAAA;AAE3B,4DAA0D;AAAjD,2GAAA,WAAW,OAAA;AAEpB,+DAA4D;AAAnD,8GAAA,YAAY,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAMA,2CAoBqB;AAnBpB,kGAAA,GAAG,OAAA;AACH,kGAAA,GAAG,OAAA;AACH,sGAAA,OAAO,OAAA;AACP,mGAAA,IAAI,OAAA;AACJ,iGAAA,EAAE,OAAA;AACF,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AACH,oGAAA,KAAK,OAAA;AACL,sGAAA,OAAO,OAAA;AACP,wGAAA,SAAS,OAAA;AACT,qGAAA,MAAM,OAAA;AACN,mGAAA,IAAI,OAAA;AACJ,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AACH,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AACH,yGAAA,UAAU,OAAA;AACV,iGAAA,EAAE,OAAA;AACF,kGAAA,GAAG,OAAA;AASJ,gFAA4E;AAAnE,+HAAA,oBAAoB,OAAA;AAE7B,+EAA2E;AAAlE,2HAAA,kBAAkB,OAAA;AAE3B,4DAA0D;AAAjD,2GAAA,WAAW,OAAA;AAEpB,+DAA4D;AAAnD,8GAAA,YAAY,OAAA;AAiErB,0DAA2D;AAAlD,8GAAA,cAAc,OAAA;AASvB,8EAAkE;AAAzD,qHAAA,WAAW,OAAA;AAGpB,gEAWsC;AAVrC,yHAAA,sBAAsB,OAAA;AACtB,8HAAA,2BAA2B,OAAA;AAC3B,2HAAA,wBAAwB,OAAA;AACxB,uHAAA,oBAAoB,OAAA;AACpB,0HAAA,uBAAuB,OAAA;AACvB,+HAAA,4BAA4B,OAAA;AAC5B,wHAAA,qBAAqB,OAAA;AACrB,wHAAA,qBAAqB,OAAA;AACrB,uHAAA,oBAAoB,OAAA;AACpB,4HAAA,yBAAyB,OAAA;AAG1B,qEAAkE;AAAzD,wHAAA,iBAAiB,OAAA;AAC1B,mEAKsC;AAJrC,wHAAA,kBAAkB,OAAA;AAClB,yHAAA,mBAAmB,OAAA;AACnB,gHAAA,UAAU,OAAA;AACV,uHAAA,iBAAiB,OAAA;AAOlB,qEAA0E;AAAjE,kHAAA,WAAW,OAAA;AAAE,mHAAA,YAAY,OAAA;AAElC,4EAAwE;AAA/D,2HAAA,kBAAkB,OAAA;AAC3B,0DAA4D;AAAnD,+GAAA,eAAe,OAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OnModuleDestroy } from "@nestjs/common";
|
|
2
|
-
import type { DrizzleCrudConfig } from "../core/interfaces/drizzle-crud-config.interface";
|
|
2
|
+
import type { DrizzleConnectionOptions, DrizzleCrudConfig } from "../core/interfaces/drizzle-crud-config.interface";
|
|
3
3
|
export declare const DRIZZLE_DB = "DRIZZLE_DB";
|
|
4
4
|
export declare const DRIZZLE_CRUD_CONFIG = "DRIZZLE_CRUD_CONFIG";
|
|
5
5
|
export declare const DRIZZLE_CONNECTION = "DRIZZLE_CONNECTION";
|
|
@@ -10,3 +10,5 @@ export declare class DrizzleConnection implements OnModuleDestroy {
|
|
|
10
10
|
init(config: DrizzleCrudConfig): Promise<void>;
|
|
11
11
|
onModuleDestroy(): Promise<void>;
|
|
12
12
|
}
|
|
13
|
+
export declare function postgresOptions(options?: DrizzleConnectionOptions): Record<string, unknown>;
|
|
14
|
+
export declare function mysqlOptions(options?: DrizzleConnectionOptions): Record<string, unknown>;
|
|
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.DrizzleConnection = exports.DRIZZLE_CONNECTION = exports.DRIZZLE_CRUD_CONFIG = exports.DRIZZLE_DB = void 0;
|
|
37
|
+
exports.postgresOptions = postgresOptions;
|
|
38
|
+
exports.mysqlOptions = mysqlOptions;
|
|
37
39
|
exports.DRIZZLE_DB = "DRIZZLE_DB";
|
|
38
40
|
exports.DRIZZLE_CRUD_CONFIG = "DRIZZLE_CRUD_CONFIG";
|
|
39
41
|
exports.DRIZZLE_CONNECTION = "DRIZZLE_CONNECTION";
|
|
@@ -52,7 +54,10 @@ class DrizzleConnection {
|
|
|
52
54
|
if (config.dialect === "postgresql") {
|
|
53
55
|
const postgres = (await Promise.resolve().then(() => __importStar(require("postgres")))).default;
|
|
54
56
|
const { drizzle } = await Promise.resolve().then(() => __importStar(require("drizzle-orm/postgres-js")));
|
|
55
|
-
const client = postgres(config.connectionString, {
|
|
57
|
+
const client = postgres(config.connectionString, {
|
|
58
|
+
prepare: false,
|
|
59
|
+
...postgresOptions(config.connection),
|
|
60
|
+
});
|
|
56
61
|
this.client = client;
|
|
57
62
|
this.ownsConnection = true;
|
|
58
63
|
this.db = config.schema
|
|
@@ -60,7 +65,21 @@ class DrizzleConnection {
|
|
|
60
65
|
: drizzle(client);
|
|
61
66
|
return;
|
|
62
67
|
}
|
|
63
|
-
|
|
68
|
+
if (config.dialect === "mysql") {
|
|
69
|
+
const mysql = await Promise.resolve().then(() => __importStar(require("mysql2/promise")));
|
|
70
|
+
const { drizzle } = await Promise.resolve().then(() => __importStar(require("drizzle-orm/mysql2")));
|
|
71
|
+
const pool = mysql.createPool({
|
|
72
|
+
uri: config.connectionString,
|
|
73
|
+
...mysqlOptions(config.connection),
|
|
74
|
+
});
|
|
75
|
+
this.client = pool;
|
|
76
|
+
this.ownsConnection = true;
|
|
77
|
+
this.db = config.schema
|
|
78
|
+
? drizzle(pool, { schema: config.schema, mode: "default" })
|
|
79
|
+
: drizzle(pool);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
throw new Error(`DrizzleCrudModule: building a connection from \`connectionString\` is only supported for the "postgresql" and "mysql" dialects. ` +
|
|
64
83
|
`For "${config.dialect}", construct the Drizzle instance yourself and pass it as \`db\`.`);
|
|
65
84
|
}
|
|
66
85
|
async onModuleDestroy() {
|
|
@@ -70,4 +89,32 @@ class DrizzleConnection {
|
|
|
70
89
|
}
|
|
71
90
|
}
|
|
72
91
|
exports.DrizzleConnection = DrizzleConnection;
|
|
92
|
+
function postgresOptions(options = {}) {
|
|
93
|
+
const out = {};
|
|
94
|
+
if (options.poolSize !== undefined)
|
|
95
|
+
out.max = options.poolSize;
|
|
96
|
+
if (options.idleTimeout !== undefined) {
|
|
97
|
+
out.idle_timeout = options.idleTimeout;
|
|
98
|
+
}
|
|
99
|
+
if (options.ssl !== undefined)
|
|
100
|
+
out.ssl = options.ssl;
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
function mysqlOptions(options = {}) {
|
|
104
|
+
const out = {};
|
|
105
|
+
if (options.poolSize !== undefined)
|
|
106
|
+
out.connectionLimit = options.poolSize;
|
|
107
|
+
if (options.idleTimeout !== undefined) {
|
|
108
|
+
out.idleTimeout = options.idleTimeout * 1000;
|
|
109
|
+
}
|
|
110
|
+
const ssl = options.ssl;
|
|
111
|
+
if (ssl === true)
|
|
112
|
+
out.ssl = {};
|
|
113
|
+
else if (typeof ssl === "string") {
|
|
114
|
+
throw new Error(`DrizzleCrudModule: connection.ssl "${ssl}" is a postgres-js mode; for mysql pass true or a TLS options object.`);
|
|
115
|
+
}
|
|
116
|
+
else if (ssl && typeof ssl === "object")
|
|
117
|
+
out.ssl = ssl;
|
|
118
|
+
return out;
|
|
119
|
+
}
|
|
73
120
|
//# sourceMappingURL=drizzle-connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-connection.js","sourceRoot":"","sources":["../../src/modules/drizzle-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drizzle-connection.js","sourceRoot":"","sources":["../../src/modules/drizzle-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { type DynamicModule } from "@nestjs/common";
|
|
2
|
-
import type { CrudFeature, DrizzleCrudConfig } from "../core/interfaces/drizzle-crud-config.interface";
|
|
2
|
+
import type { CrudFeature, DrizzleCrudAsyncOptions, DrizzleCrudConfig } from "../core/interfaces/drizzle-crud-config.interface";
|
|
3
3
|
export declare class DrizzleCrudModule {
|
|
4
4
|
static forRoot(config: DrizzleCrudConfig): DynamicModule;
|
|
5
|
-
static forRootAsync(options:
|
|
6
|
-
imports?: any[];
|
|
7
|
-
useFactory: (...args: any[]) => Promise<DrizzleCrudConfig> | DrizzleCrudConfig;
|
|
8
|
-
inject?: any[];
|
|
9
|
-
}): DynamicModule;
|
|
5
|
+
static forRootAsync(options: DrizzleCrudAsyncOptions): DynamicModule;
|
|
10
6
|
static forFeature(entities: CrudFeature[]): DynamicModule;
|
|
11
7
|
}
|
|
@@ -28,7 +28,7 @@ function normalizeConfig(config) {
|
|
|
28
28
|
},
|
|
29
29
|
sql: {
|
|
30
30
|
caseSensitive: false,
|
|
31
|
-
useReturning: config.dialect
|
|
31
|
+
useReturning: config.dialect !== "mysql",
|
|
32
32
|
jsonSupport: true,
|
|
33
33
|
enableFullTextSearch: false,
|
|
34
34
|
...config.sql,
|
|
@@ -110,6 +110,29 @@ function connectionProviders(rawConfigProvider) {
|
|
|
110
110
|
},
|
|
111
111
|
];
|
|
112
112
|
}
|
|
113
|
+
function asyncConfigProvider(options) {
|
|
114
|
+
if (options.useFactory) {
|
|
115
|
+
return {
|
|
116
|
+
provide: DRIZZLE_RAW_CONFIG,
|
|
117
|
+
useFactory: options.useFactory,
|
|
118
|
+
inject: options.inject || [],
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const factory = options.useClass ?? options.useExisting;
|
|
122
|
+
if (!factory) {
|
|
123
|
+
throw new Error("DrizzleCrudModule.forRootAsync: provide useFactory, useClass or useExisting.");
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
provide: DRIZZLE_RAW_CONFIG,
|
|
127
|
+
useFactory: (instance) => instance.createDrizzleCrudOptions(),
|
|
128
|
+
inject: [factory],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function asyncFactoryProviders(options) {
|
|
132
|
+
if (options.useFactory || !options.useClass)
|
|
133
|
+
return [];
|
|
134
|
+
return [{ provide: options.useClass, useClass: options.useClass }];
|
|
135
|
+
}
|
|
113
136
|
const EXPORTED_TOKENS = [
|
|
114
137
|
drizzle_connection_1.DRIZZLE_CRUD_CONFIG,
|
|
115
138
|
drizzle_connection_1.DRIZZLE_DB,
|
|
@@ -132,11 +155,10 @@ let DrizzleCrudModule = DrizzleCrudModule_1 = class DrizzleCrudModule {
|
|
|
132
155
|
return {
|
|
133
156
|
module: DrizzleCrudModule_1,
|
|
134
157
|
imports: options.imports || [],
|
|
135
|
-
providers:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}),
|
|
158
|
+
providers: [
|
|
159
|
+
...asyncFactoryProviders(options),
|
|
160
|
+
...connectionProviders(asyncConfigProvider(options)),
|
|
161
|
+
],
|
|
140
162
|
exports: EXPORTED_TOKENS,
|
|
141
163
|
global: true,
|
|
142
164
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-crud.module.js","sourceRoot":"","sources":["../../src/modules/drizzle-crud.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2E;
|
|
1
|
+
{"version":3,"file":"drizzle-crud.module.js","sourceRoot":"","sources":["../../src/modules/drizzle-crud.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2E;AAQ3E,kEAA6D;AAC7D,6DAA6D;AAC7D,6DAK8B;AAE9B,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAGhD,SAAS,eAAe,CAAC,MAAyB;IACjD,OAAO;QACN,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE;YACT,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,GAAG,MAAM,CAAC,QAAQ;YAElB,UAAU,EAAE;gBACX,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,GAAG;gBACb,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU;aAC9B;SACD;QACD,GAAG,EAAE;YACJ,aAAa,EAAE,KAAK;YAEpB,YAAY,EAAE,MAAM,CAAC,OAAO,KAAK,OAAO;YACxC,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,MAAM,CAAC,GAAG;SACb;QACD,KAAK,EAAE;YACN,iBAAiB,EAAE,MAAM,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI;SAC3D;KACD,CAAC;AACH,CAAC;AAID,SAAS,iBAAiB,CACzB,OAAY,EACZ,KAAU,EACV,YAAmC,EACnC,EAAO,EACP,YAAiB,EACjB,MAAqB;IAErB,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAG5E,MAAM,SAAS,GAAwB,IAAA,8BAAe,EACrD,eAAe,EACf,YAAY,CACZ,CAAC;IACF,MAAM,EAAE,GAAG,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAC;IAExC,MAAM,aAAa,GAAQ;QAC1B,OAAO,EAAE,YAAY,EAAE,OAAO;QAC9B,EAAE;QACF,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,QAAQ;QACxB,UAAU,EACT,EAAE,CAAC,UAAU,KAAK,KAAK;YACtB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;YAC1C,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE;QAG3C,UAAU,EACT,EAAE,CAAC,UAAU,KAAK,KAAK;YACtB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE;KACxD,CAAC;IACF,IAAI,EAAE,CAAC,UAAU;QAAE,aAAa,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;IAE5D,IAAI,YAAY,EAAE,KAAK,EAAE,iBAAiB,IAAI,MAAM,EAAE,CAAC;QACtD,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/B,CAAC;IACD,IAAI,YAAY,EAAE,GAAG;QAAE,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAG5D,MAAM,WAAW,GAAQ,IAAA,8BAAe,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACnE,WAAW,CAAC,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;IAI7C,IACC,CAAC,WAAW,CAAC,WAAW;QACxB,EAAE,CAAC,SAAS;QACZ,WAAW,CAAC,UAAU,EAAE,SAAS,EAChC,CAAC;QACF,WAAW,CAAC,WAAW,GAAG;YACzB,EAAE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE;SACjE,CAAC;IACH,CAAC;IAED,OAAO,WAA4B,CAAC;AACrC,CAAC;AAID,SAAS,mBAAmB,CAAC,iBAA2B;IACvD,OAAO;QACN,iBAAiB;QACjB;YACC,OAAO,EAAE,wCAAmB;YAC5B,MAAM,EAAE,CAAC,kBAAkB,CAAC;YAC5B,UAAU,EAAE,CAAC,GAAsB,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;SAC5D;QACD;YACC,OAAO,EAAE,uCAAkB;YAC3B,MAAM,EAAE,CAAC,kBAAkB,CAAC;YAC5B,UAAU,EAAE,KAAK,EAChB,GAAsB,EACO,EAAE;gBAC/B,MAAM,UAAU,GAAG,IAAI,sCAAiB,EAAE,CAAC;gBAC3C,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,UAAU,CAAC;YACnB,CAAC;SACD;QACD;YACC,OAAO,EAAE,+BAAU;YACnB,MAAM,EAAE,CAAC,uCAAkB,CAAC;YAC5B,UAAU,EAAE,CAAC,UAA6B,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE;SAC5D;QACD;YACC,OAAO,EAAE,6BAAY;YACrB,MAAM,EAAE,CAAC,kBAAkB,CAAC;YAC5B,UAAU,EAAE,CAAC,GAAsB,EAAE,EAAE;gBACtC,MAAM,GAAG,GAAG,IAAI,6BAAY,EAAE,CAAC;gBAC/B,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC;oBACvD,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC;oBACnD,OAAO,CAAC,IAAI,CACX,4GAA4G,CAC5G,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC;YACZ,CAAC;SACD;KACD,CAAC;AACH,CAAC;AAID,SAAS,mBAAmB,CAAC,OAAgC;IAC5D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO;YACN,OAAO,EAAE,kBAAkB;YAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC5B,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,8EAA8E,CAC9E,CAAC;IACH,CAAC;IACD,OAAO;QACN,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE,CAAC,QAAmC,EAAE,EAAE,CACnD,QAAQ,CAAC,wBAAwB,EAAE;QACpC,MAAM,EAAE,CAAC,OAAO,CAAC;KACjB,CAAC;AACH,CAAC;AAID,SAAS,qBAAqB,CAAC,OAAgC;IAC9D,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,eAAe,GAAG;IACvB,wCAAmB;IACnB,+BAAU;IACV,uCAAkB;IAClB,6BAAY;CACZ,CAAC;AAGK,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IACtB,AAAP,MAAM,CAAC,OAAO,CAAC,MAAyB;QACvC,OAAO;YACN,MAAM,qBAAmB;YACzB,SAAS,EAAE,mBAAmB,CAAC;gBAC9B,OAAO,EAAE,kBAAkB;gBAC3B,QAAQ,EAAE,MAAM;aAChB,CAAC;YACF,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,IAAI;SACZ,CAAC;IACH,CAAC;IAEM,AAAP,MAAM,CAAC,YAAY,CAAC,OAAgC;QACnD,OAAO;YACN,MAAM,qBAAmB;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACV,GAAG,qBAAqB,CAAC,OAAO,CAAC;gBACjC,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;aACpD;YACD,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,IAAI;SACZ,CAAC;IACH,CAAC;IAEM,AAAP,MAAM,CAAC,UAAU,CAAC,QAAuB;QACxC,MAAM,SAAS,GAAe,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvD,OAAO,EAAE,MAAM,CAAC,OAAO;YAGvB,MAAM,EAAE;gBACP,+BAAU;gBACV,wCAAmB;gBACnB,EAAE,KAAK,EAAE,6BAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;aACvC;YACD,UAAU,EAAE,CAAC,EAAO,EAAE,YAAiB,EAAE,MAAqB,EAAE,EAAE,CACjE,IAAI,MAAM,CAAC,OAAO,CACjB,iBAAiB,CAChB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,EAAE,EACF,YAAY,EACZ,MAAM,CACN,CACD;SACF,CAAC,CAAC,CAAC;QAEJ,OAAO;YACN,MAAM,qBAAmB;YACzB,SAAS;YACT,OAAO,EAAE,SAAS;SAClB,CAAC;IACH,CAAC;CACD,CAAA;;4BAvDY,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAuD7B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@avytrix/nestjs-drizzle-crud",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "NestJS + Drizzle ORM CRUD: type-safe services with filtering, pagination, cursor pagination, relations, soft delete, upsert, multi-tenancy and OpenAPI for PostgreSQL and
|
|
3
|
+
"version": "3.7.0",
|
|
4
|
+
"description": "NestJS + Drizzle ORM CRUD: type-safe services with filtering, pagination, cursor pagination, relations, soft delete, upsert, multi-tenancy and OpenAPI for PostgreSQL, MySQL and SQLite.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -47,6 +47,8 @@
|
|
|
47
47
|
"swagger",
|
|
48
48
|
"postgresql",
|
|
49
49
|
"mysql",
|
|
50
|
+
"sqlite",
|
|
51
|
+
"libsql",
|
|
50
52
|
"typescript",
|
|
51
53
|
"mcp",
|
|
52
54
|
"rest",
|
|
@@ -77,6 +79,7 @@
|
|
|
77
79
|
"@nestjs/core": ">=10.0.0",
|
|
78
80
|
"@nestjs/swagger": ">=7.0.0",
|
|
79
81
|
"drizzle-orm": ">=0.28.0 <1.0.0",
|
|
82
|
+
"mysql2": ">=3.0.0",
|
|
80
83
|
"postgres": ">=3.0.0",
|
|
81
84
|
"reflect-metadata": "^0.1.13 || ^0.2.0"
|
|
82
85
|
},
|
|
@@ -84,6 +87,9 @@
|
|
|
84
87
|
"@nestjs/swagger": {
|
|
85
88
|
"optional": true
|
|
86
89
|
},
|
|
90
|
+
"mysql2": {
|
|
91
|
+
"optional": true
|
|
92
|
+
},
|
|
87
93
|
"postgres": {
|
|
88
94
|
"optional": true
|
|
89
95
|
}
|
|
@@ -91,6 +97,7 @@
|
|
|
91
97
|
"devDependencies": {
|
|
92
98
|
"@electric-sql/pglite": "^0.5.4",
|
|
93
99
|
"@jest/globals": "^30.0.0",
|
|
100
|
+
"@libsql/client": "^0.18.0",
|
|
94
101
|
"@nestjs/common": "^11.1.28",
|
|
95
102
|
"@nestjs/core": "^11.1.28",
|
|
96
103
|
"@nestjs/swagger": "^11.4.7",
|
|
@@ -101,6 +108,7 @@
|
|
|
101
108
|
"@types/node": "^26.0.0",
|
|
102
109
|
"drizzle-orm": "^0.45.2",
|
|
103
110
|
"jest": "^30.4.2",
|
|
111
|
+
"mysql2": "^3.24.6",
|
|
104
112
|
"postgres": "^3.4.9",
|
|
105
113
|
"reflect-metadata": "^0.2.0",
|
|
106
114
|
"typescript": "^7.0.0"
|