stabilize-orm 1.3.8 → 2.1.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.
Files changed (75) hide show
  1. package/README.md +1097 -546
  2. package/dist/auto-migrate.d.ts +34 -0
  3. package/dist/auto-migrate.d.ts.map +1 -0
  4. package/dist/auto-migrate.js +3003 -0
  5. package/dist/auto-migrate.js.map +163 -0
  6. package/dist/cache.d.ts +90 -0
  7. package/dist/cache.d.ts.map +1 -0
  8. package/dist/cache.js +166 -0
  9. package/dist/cache.js.map +64 -0
  10. package/dist/client.d.ts +73 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +2997 -0
  13. package/dist/client.js.map +162 -0
  14. package/dist/hooks.d.ts +31 -0
  15. package/dist/hooks.d.ts.map +1 -0
  16. package/dist/hooks.js +4 -0
  17. package/dist/hooks.js.map +11 -0
  18. package/dist/index.d.ts +101 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3183 -0
  21. package/dist/index.js.map +222 -0
  22. package/dist/logger.d.ts +40 -0
  23. package/dist/logger.d.ts.map +1 -0
  24. package/dist/logger.js +8 -0
  25. package/dist/logger.js.map +11 -0
  26. package/dist/migrations.d.ts +31 -0
  27. package/dist/migrations.d.ts.map +1 -0
  28. package/dist/migrations.js +3009 -0
  29. package/dist/migrations.js.map +164 -0
  30. package/{model.ts → dist/model.d.ts} +124 -189
  31. package/dist/model.d.ts.map +1 -0
  32. package/dist/model.js +4 -0
  33. package/dist/model.js.map +10 -0
  34. package/dist/query-builder.d.ts +91 -0
  35. package/dist/query-builder.d.ts.map +1 -0
  36. package/dist/query-builder.js +14 -0
  37. package/dist/query-builder.js.map +12 -0
  38. package/dist/repository.d.ts +165 -0
  39. package/dist/repository.d.ts.map +1 -0
  40. package/dist/repository.js +176 -0
  41. package/dist/repository.js.map +69 -0
  42. package/dist/tsconfig.tsbuildinfo +1 -0
  43. package/dist/types.d.ts +110 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +4 -0
  46. package/dist/types.js.map +10 -0
  47. package/dist/utils/encryption.d.ts +13 -0
  48. package/dist/utils/encryption.d.ts.map +1 -0
  49. package/dist/utils/encryption.js +4 -0
  50. package/dist/utils/encryption.js.map +10 -0
  51. package/package.json +104 -25
  52. package/.eslintrc.json +0 -10
  53. package/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md +0 -23
  54. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -25
  55. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  56. package/.github/workflows/ci-cd.yml +0 -22
  57. package/CHANGELOG.md +0 -75
  58. package/CODE_OF_CONDUCT.md +0 -87
  59. package/CONTRIBUTING.md +0 -48
  60. package/FUNDING.md +0 -14
  61. package/SECURITY.md +0 -35
  62. package/SUPPORT.md +0 -18
  63. package/bun.lock +0 -667
  64. package/cache.ts +0 -181
  65. package/client.ts +0 -249
  66. package/docker-compose.yml +0 -22
  67. package/hooks.ts +0 -76
  68. package/index.ts +0 -158
  69. package/logger.ts +0 -127
  70. package/migrations.ts +0 -318
  71. package/query-builder.ts +0 -209
  72. package/repository.ts +0 -1096
  73. package/tests/migrations.test.ts +0 -141
  74. package/tsconfig.json +0 -32
  75. package/types.ts +0 -106
@@ -0,0 +1,165 @@
1
+ /**
2
+ * @file repository.ts
3
+ * @description Provides a data access layer for a specific model, handling all CRUD operations.
4
+ * @author ElectronSz
5
+ */
6
+ import { DBClient } from "./client";
7
+ import { type Logger } from "./logger";
8
+ import { QueryBuilder } from "./query-builder";
9
+ import { type CacheConfig } from "./types";
10
+ export declare class Repository<T> {
11
+ private client;
12
+ private cache;
13
+ private table;
14
+ private columns;
15
+ private validators;
16
+ private relations;
17
+ private softDeleteField;
18
+ private logger;
19
+ private versioned;
20
+ private historyTable;
21
+ private model;
22
+ private optimisticLockField;
23
+ private timestampsConfig;
24
+ constructor(client: DBClient, model: new (...args: any[]) => T, cacheConfig?: CacheConfig, logger?: Logger);
25
+ private getOptimisticLockField;
26
+ private getDBType;
27
+ private validate;
28
+ private runHooks;
29
+ find(): QueryBuilder<T>;
30
+ scope(name: string, ...args: any[]): QueryBuilder<T>;
31
+ findOne(id: number | string, options?: {
32
+ relations?: string[];
33
+ }, _client?: DBClient): Promise<T | null>;
34
+ asOf(id: number | string, asOfDate: Date, _client?: DBClient): Promise<T | null>;
35
+ history(id: number | string, _client?: DBClient): Promise<T[]>;
36
+ rollback(id: number | string, version: number, _client?: DBClient): Promise<T>;
37
+ private writeHistory;
38
+ create(entity: Partial<T>, options?: {
39
+ relations?: string[];
40
+ }): Promise<T>;
41
+ private _create;
42
+ bulkCreate(entities: Partial<T>[], options?: {
43
+ relations?: string[];
44
+ batchSize?: number;
45
+ }): Promise<T[]>;
46
+ private _bulkCreate;
47
+ update(id: number | string, entity: Partial<T>): Promise<T>;
48
+ private _update;
49
+ bulkUpdate(updates: {
50
+ where: {
51
+ condition: string;
52
+ params: any[];
53
+ };
54
+ set: Partial<T>;
55
+ }[], options?: {
56
+ batchSize?: number;
57
+ }): Promise<void>;
58
+ private _bulkUpdate;
59
+ upsert(entity: Partial<T>, keys: string[]): Promise<T>;
60
+ private _upsert;
61
+ delete(id: number | string): Promise<void>;
62
+ private _delete;
63
+ bulkDelete(ids: (number | string)[], options?: {
64
+ batchSize?: number;
65
+ }): Promise<void>;
66
+ private _bulkDelete;
67
+ recover(id: number | string): Promise<T>;
68
+ private _recover;
69
+ rawQuery<R = T>(query: string, params?: any[]): Promise<R[]>;
70
+ private loadRelation;
71
+ private loadNestedRelations;
72
+ paginate(page: number, pageSize: number, options?: any): Promise<{
73
+ data: T[];
74
+ total: number;
75
+ page: number;
76
+ pageSize: number;
77
+ }>;
78
+ private processForSave;
79
+ private processForLoad;
80
+ findAndCount(options?: {
81
+ relations?: string[];
82
+ }): Promise<{
83
+ data: T[];
84
+ total: number;
85
+ }>;
86
+ findOneBy(conditions: Partial<T>, options?: {
87
+ relations?: string[];
88
+ }, _client?: DBClient): Promise<T | null>;
89
+ findBy(conditions: Partial<T>, options?: {
90
+ relations?: string[];
91
+ limit?: number;
92
+ orderBy?: string;
93
+ }): Promise<T[]>;
94
+ count(conditions?: Partial<T>): Promise<number>;
95
+ findAndCountAll(options?: {
96
+ page?: number;
97
+ pageSize?: number;
98
+ conditions?: Partial<T>;
99
+ }): Promise<{
100
+ data: T[];
101
+ total: number;
102
+ }>;
103
+ toJSON(entity: T): Record<string, any>;
104
+ aggregate(options: {
105
+ count?: string | string[];
106
+ sum?: string[];
107
+ avg?: string[];
108
+ min?: string[];
109
+ max?: string[];
110
+ }): Promise<Record<string, any>>;
111
+ findMany(options?: {
112
+ where?: Partial<T>;
113
+ cursor?: {
114
+ field: string;
115
+ value: any;
116
+ direction?: "forward" | "backward";
117
+ };
118
+ take?: number;
119
+ skip?: number;
120
+ orderBy?: {
121
+ field: string;
122
+ direction: "ASC" | "DESC";
123
+ };
124
+ relations?: string[];
125
+ }): Promise<T[]>;
126
+ bulkUpsert(entities: Partial<T>[], keys: string[]): Promise<T[]>;
127
+ exists(conditions?: Partial<T>): Promise<boolean>;
128
+ recoverAll(): Promise<number>;
129
+ truncate(): Promise<void>;
130
+ seed(data: Partial<T>[], options?: {
131
+ ignoreDuplicates?: boolean;
132
+ }): Promise<T[]>;
133
+ healthCheck(): Promise<{
134
+ status: string;
135
+ table: string;
136
+ rows: number;
137
+ latencyMs: number;
138
+ }>;
139
+ countDistinct(column: string): Promise<number>;
140
+ increment(id: number | string, field: string, amount?: number): Promise<T>;
141
+ decrement(id: number | string, field: string, amount?: number): Promise<T>;
142
+ pluck<K extends keyof T>(column: K): Promise<any[]>;
143
+ selectColumns(...columns: (keyof T)[]): Promise<Partial<T>[]>;
144
+ toggle(id: number | string, field: string): Promise<T>;
145
+ updateBy(conditions: Partial<T>, updates: Partial<T>): Promise<number>;
146
+ deleteBy(conditions: Partial<T>): Promise<number>;
147
+ restoreBy(conditions: Partial<T>): Promise<number>;
148
+ findDeleted(): QueryBuilder<T>;
149
+ withTrashed(): QueryBuilder<T>;
150
+ upsertMany(entities: Partial<T>[], keys: string[], batchSize?: number): Promise<T[]>;
151
+ map<R>(query: QueryBuilder<T>, transform: (item: T) => R): Promise<R[]>;
152
+ each(query: QueryBuilder<T>, callback: (item: T, index: number) => void | Promise<void>, pageSize?: number): Promise<void>;
153
+ eachBatch(query: QueryBuilder<T>, callback: (batch: T[]) => void | Promise<void>, batchSize?: number): Promise<void>;
154
+ lockForUpdate(id: number | string, _client?: DBClient): Promise<T | null>;
155
+ firstOrCreate(conditions: Partial<T>, defaults?: Partial<T>): Promise<T>;
156
+ updateOrCreate(conditions: Partial<T>, updates: Partial<T>): Promise<T>;
157
+ first(conditions?: Partial<T>): Promise<T | null>;
158
+ last(field?: string): Promise<T | null>;
159
+ random(): Promise<T | null>;
160
+ hasColumn(field: string): boolean;
161
+ getTableName(): string;
162
+ getSoftDeleteField(): string | null;
163
+ getIsVersioned(): boolean;
164
+ }
165
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../repository.ts"],"names":[],"mappings":"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"}