alepha 0.13.1 → 0.13.2
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/README.md +1 -1
- package/dist/api-files/index.d.ts +28 -91
- package/dist/api-files/index.js +10 -755
- package/dist/api-files/index.js.map +1 -1
- package/dist/api-jobs/index.d.ts +46 -46
- package/dist/api-jobs/index.js +13 -13
- package/dist/api-jobs/index.js.map +1 -1
- package/dist/api-notifications/index.d.ts +129 -146
- package/dist/api-notifications/index.js +17 -39
- package/dist/api-notifications/index.js.map +1 -1
- package/dist/api-parameters/index.d.ts +21 -22
- package/dist/api-parameters/index.js +22 -22
- package/dist/api-parameters/index.js.map +1 -1
- package/dist/api-users/index.d.ts +223 -2000
- package/dist/api-users/index.js +914 -4787
- package/dist/api-users/index.js.map +1 -1
- package/dist/api-verifications/index.d.ts +96 -96
- package/dist/batch/index.d.ts +13 -13
- package/dist/batch/index.js +8 -8
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +14 -14
- package/dist/bucket/index.js +12 -12
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/index.d.ts +11 -11
- package/dist/cache/index.js +9 -9
- package/dist/cache/index.js.map +1 -1
- package/dist/cli/index.d.ts +28 -26
- package/dist/cli/index.js +50 -13
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +19 -19
- package/dist/command/index.js +25 -25
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +218 -218
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +232 -232
- package/dist/core/index.js +218 -218
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +2113 -0
- package/dist/core/index.native.js.map +1 -0
- package/dist/datetime/index.d.ts +9 -9
- package/dist/datetime/index.js +7 -7
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/index.d.ts +16 -16
- package/dist/email/index.js +9 -9
- package/dist/email/index.js.map +1 -1
- package/dist/file/index.js +1 -1
- package/dist/file/index.js.map +1 -1
- package/dist/lock/index.d.ts +9 -9
- package/dist/lock/index.js +8 -8
- package/dist/lock/index.js.map +1 -1
- package/dist/lock-redis/index.js +3 -66
- package/dist/lock-redis/index.js.map +1 -1
- package/dist/logger/index.d.ts +5 -5
- package/dist/logger/index.js +8 -8
- package/dist/logger/index.js.map +1 -1
- package/dist/orm/index.browser.js +114 -114
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.d.ts +218 -218
- package/dist/orm/index.js +46 -46
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/index.d.ts +29 -29
- package/dist/queue/index.js +20 -20
- package/dist/queue/index.js.map +1 -1
- package/dist/queue-redis/index.d.ts +2 -2
- package/dist/redis/index.d.ts +10 -10
- package/dist/retry/index.d.ts +19 -19
- package/dist/retry/index.js +7 -7
- package/dist/retry/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +16 -16
- package/dist/scheduler/index.js +9 -9
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +80 -80
- package/dist/security/index.js +32 -32
- package/dist/security/index.js.map +1 -1
- package/dist/server/index.browser.js +1 -1
- package/dist/server/index.browser.js.map +1 -1
- package/dist/server/index.d.ts +101 -101
- package/dist/server/index.js +16 -16
- package/dist/server/index.js.map +1 -1
- package/dist/server-auth/index.browser.js +4 -982
- package/dist/server-auth/index.browser.js.map +1 -1
- package/dist/server-auth/index.d.ts +204 -785
- package/dist/server-auth/index.js +47 -1239
- package/dist/server-auth/index.js.map +1 -1
- package/dist/server-cache/index.d.ts +10 -10
- package/dist/server-cache/index.js +2 -2
- package/dist/server-cache/index.js.map +1 -1
- package/dist/server-compress/index.d.ts +4 -4
- package/dist/server-compress/index.js +1 -1
- package/dist/server-compress/index.js.map +1 -1
- package/dist/server-cookies/index.browser.js +8 -8
- package/dist/server-cookies/index.browser.js.map +1 -1
- package/dist/server-cookies/index.d.ts +17 -17
- package/dist/server-cookies/index.js +10 -10
- package/dist/server-cookies/index.js.map +1 -1
- package/dist/server-cors/index.d.ts +17 -17
- package/dist/server-cors/index.js +9 -9
- package/dist/server-cors/index.js.map +1 -1
- package/dist/server-health/index.d.ts +19 -19
- package/dist/server-helmet/index.d.ts +1 -1
- package/dist/server-links/index.browser.js +12 -12
- package/dist/server-links/index.browser.js.map +1 -1
- package/dist/server-links/index.d.ts +59 -251
- package/dist/server-links/index.js +23 -502
- package/dist/server-links/index.js.map +1 -1
- package/dist/server-metrics/index.d.ts +4 -4
- package/dist/server-multipart/index.d.ts +2 -2
- package/dist/server-proxy/index.d.ts +12 -12
- package/dist/server-proxy/index.js +10 -10
- package/dist/server-proxy/index.js.map +1 -1
- package/dist/server-rate-limit/index.d.ts +22 -22
- package/dist/server-rate-limit/index.js +12 -12
- package/dist/server-rate-limit/index.js.map +1 -1
- package/dist/server-security/index.d.ts +22 -22
- package/dist/server-security/index.js +15 -15
- package/dist/server-security/index.js.map +1 -1
- package/dist/server-static/index.d.ts +14 -14
- package/dist/server-static/index.js +8 -8
- package/dist/server-static/index.js.map +1 -1
- package/dist/server-swagger/index.d.ts +25 -184
- package/dist/server-swagger/index.js +21 -724
- package/dist/server-swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +14 -14
- package/dist/sms/index.js +9 -9
- package/dist/sms/index.js.map +1 -1
- package/dist/thread/index.d.ts +11 -11
- package/dist/thread/index.js +17 -17
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/index.d.ts +26 -26
- package/dist/topic/index.js +16 -16
- package/dist/topic/index.js.map +1 -1
- package/dist/topic-redis/index.d.ts +1 -1
- package/dist/vite/index.d.ts +3 -3
- package/dist/vite/index.js +8 -8
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +11 -11
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +58 -58
- package/dist/websocket/index.js +13 -13
- package/dist/websocket/index.js.map +1 -1
- package/package.json +113 -52
- package/src/api-files/services/FileService.ts +5 -7
- package/src/api-jobs/index.ts +1 -1
- package/src/api-jobs/{descriptors → primitives}/$job.ts +8 -8
- package/src/api-jobs/providers/JobProvider.ts +9 -9
- package/src/api-jobs/services/JobService.ts +5 -5
- package/src/api-notifications/index.ts +5 -15
- package/src/api-notifications/{descriptors → primitives}/$notification.ts +10 -10
- package/src/api-notifications/services/NotificationSenderService.ts +3 -3
- package/src/api-parameters/index.ts +1 -1
- package/src/api-parameters/{descriptors → primitives}/$config.ts +7 -12
- package/src/api-users/index.ts +1 -1
- package/src/api-users/{descriptors → primitives}/$userRealm.ts +8 -8
- package/src/api-users/providers/UserRealmProvider.ts +1 -1
- package/src/batch/index.ts +3 -3
- package/src/batch/{descriptors → primitives}/$batch.ts +13 -16
- package/src/bucket/index.ts +8 -8
- package/src/bucket/{descriptors → primitives}/$bucket.ts +8 -8
- package/src/bucket/providers/LocalFileStorageProvider.ts +3 -3
- package/src/cache/index.ts +4 -4
- package/src/cache/{descriptors → primitives}/$cache.ts +15 -15
- package/src/cli/apps/AlephaPackageBuilderCli.ts +24 -2
- package/src/cli/commands/DrizzleCommands.ts +6 -6
- package/src/cli/commands/VerifyCommands.ts +1 -1
- package/src/cli/commands/ViteCommands.ts +6 -1
- package/src/cli/services/ProjectUtils.ts +34 -3
- package/src/command/index.ts +5 -5
- package/src/command/{descriptors → primitives}/$command.ts +9 -12
- package/src/command/providers/CliProvider.ts +10 -10
- package/src/core/Alepha.ts +30 -33
- package/src/core/constants/KIND.ts +1 -1
- package/src/core/constants/OPTIONS.ts +1 -1
- package/src/core/helpers/{descriptor.ts → primitive.ts} +18 -18
- package/src/core/helpers/ref.ts +1 -1
- package/src/core/index.shared.ts +8 -8
- package/src/core/{descriptors → primitives}/$context.ts +5 -5
- package/src/core/{descriptors → primitives}/$hook.ts +4 -4
- package/src/core/{descriptors → primitives}/$inject.ts +2 -2
- package/src/core/{descriptors → primitives}/$module.ts +9 -9
- package/src/core/{descriptors → primitives}/$use.ts +2 -2
- package/src/core/providers/CodecManager.ts +1 -1
- package/src/core/providers/JsonSchemaCodec.ts +1 -1
- package/src/core/providers/StateManager.ts +2 -2
- package/src/datetime/index.ts +3 -3
- package/src/datetime/{descriptors → primitives}/$interval.ts +6 -6
- package/src/email/index.ts +4 -4
- package/src/email/{descriptors → primitives}/$email.ts +8 -8
- package/src/file/index.ts +1 -1
- package/src/lock/index.ts +3 -3
- package/src/lock/{descriptors → primitives}/$lock.ts +10 -10
- package/src/logger/index.ts +8 -8
- package/src/logger/{descriptors → primitives}/$logger.ts +2 -2
- package/src/logger/services/Logger.ts +1 -1
- package/src/orm/constants/PG_SYMBOLS.ts +2 -2
- package/src/orm/index.browser.ts +2 -2
- package/src/orm/index.ts +8 -8
- package/src/orm/{descriptors → primitives}/$entity.ts +11 -11
- package/src/orm/{descriptors → primitives}/$repository.ts +2 -2
- package/src/orm/{descriptors → primitives}/$sequence.ts +8 -8
- package/src/orm/{descriptors → primitives}/$transaction.ts +4 -4
- package/src/orm/providers/PostgresTypeProvider.ts +3 -3
- package/src/orm/providers/RepositoryProvider.ts +4 -4
- package/src/orm/providers/drivers/DatabaseProvider.ts +7 -7
- package/src/orm/services/ModelBuilder.ts +9 -9
- package/src/orm/services/PgRelationManager.ts +2 -2
- package/src/orm/services/PostgresModelBuilder.ts +5 -5
- package/src/orm/services/Repository.ts +7 -7
- package/src/orm/services/SqliteModelBuilder.ts +5 -5
- package/src/queue/index.ts +7 -7
- package/src/queue/{descriptors → primitives}/$consumer.ts +15 -15
- package/src/queue/{descriptors → primitives}/$queue.ts +12 -12
- package/src/queue/providers/WorkerProvider.ts +7 -7
- package/src/retry/index.ts +3 -3
- package/src/retry/{descriptors → primitives}/$retry.ts +14 -14
- package/src/scheduler/index.ts +3 -3
- package/src/scheduler/{descriptors → primitives}/$scheduler.ts +9 -9
- package/src/scheduler/providers/CronProvider.ts +1 -1
- package/src/security/index.ts +9 -9
- package/src/security/{descriptors → primitives}/$permission.ts +7 -7
- package/src/security/{descriptors → primitives}/$realm.ts +6 -12
- package/src/security/{descriptors → primitives}/$role.ts +12 -12
- package/src/security/{descriptors → primitives}/$serviceAccount.ts +8 -8
- package/src/server/index.browser.ts +1 -1
- package/src/server/index.ts +14 -14
- package/src/server/{descriptors → primitives}/$action.ts +13 -13
- package/src/server/{descriptors → primitives}/$route.ts +9 -9
- package/src/server/providers/NodeHttpServerProvider.ts +1 -1
- package/src/server/services/HttpClient.ts +1 -1
- package/src/server-auth/index.browser.ts +1 -1
- package/src/server-auth/index.ts +6 -6
- package/src/server-auth/{descriptors → primitives}/$auth.ts +10 -10
- package/src/server-auth/{descriptors → primitives}/$authCredentials.ts +4 -4
- package/src/server-auth/{descriptors → primitives}/$authGithub.ts +4 -4
- package/src/server-auth/{descriptors → primitives}/$authGoogle.ts +4 -4
- package/src/server-auth/providers/ServerAuthProvider.ts +4 -4
- package/src/server-cache/providers/ServerCacheProvider.ts +7 -7
- package/src/server-compress/providers/ServerCompressProvider.ts +3 -3
- package/src/server-cookies/index.browser.ts +2 -2
- package/src/server-cookies/index.ts +5 -5
- package/src/server-cookies/{descriptors → primitives}/$cookie.browser.ts +12 -12
- package/src/server-cookies/{descriptors → primitives}/$cookie.ts +13 -13
- package/src/server-cookies/providers/ServerCookiesProvider.ts +4 -4
- package/src/server-cookies/services/CookieParser.ts +1 -1
- package/src/server-cors/index.ts +3 -3
- package/src/server-cors/{descriptors → primitives}/$cors.ts +11 -13
- package/src/server-cors/providers/ServerCorsProvider.ts +5 -5
- package/src/server-links/index.browser.ts +5 -5
- package/src/server-links/index.ts +9 -9
- package/src/server-links/{descriptors → primitives}/$remote.ts +11 -11
- package/src/server-links/providers/LinkProvider.ts +7 -7
- package/src/server-links/providers/{RemoteDescriptorProvider.ts → RemotePrimitiveProvider.ts} +6 -6
- package/src/server-links/providers/ServerLinksProvider.ts +3 -3
- package/src/server-proxy/index.ts +3 -3
- package/src/server-proxy/{descriptors → primitives}/$proxy.ts +8 -8
- package/src/server-proxy/providers/ServerProxyProvider.ts +4 -4
- package/src/server-rate-limit/index.ts +6 -6
- package/src/server-rate-limit/{descriptors → primitives}/$rateLimit.ts +13 -13
- package/src/server-rate-limit/providers/ServerRateLimitProvider.ts +5 -5
- package/src/server-security/index.ts +3 -3
- package/src/server-security/{descriptors → primitives}/$basicAuth.ts +13 -13
- package/src/server-security/providers/ServerBasicAuthProvider.ts +5 -5
- package/src/server-security/providers/ServerSecurityProvider.ts +4 -4
- package/src/server-static/index.ts +3 -3
- package/src/server-static/{descriptors → primitives}/$serve.ts +8 -10
- package/src/server-static/providers/ServerStaticProvider.ts +6 -6
- package/src/server-swagger/index.ts +5 -5
- package/src/server-swagger/{descriptors → primitives}/$swagger.ts +9 -9
- package/src/server-swagger/providers/ServerSwaggerProvider.ts +11 -10
- package/src/sms/index.ts +4 -4
- package/src/sms/{descriptors → primitives}/$sms.ts +8 -8
- package/src/thread/index.ts +3 -3
- package/src/thread/{descriptors → primitives}/$thread.ts +13 -13
- package/src/thread/providers/ThreadProvider.ts +7 -9
- package/src/topic/index.ts +5 -5
- package/src/topic/{descriptors → primitives}/$subscriber.ts +14 -14
- package/src/topic/{descriptors → primitives}/$topic.ts +10 -10
- package/src/topic/providers/TopicProvider.ts +4 -4
- package/src/vite/tasks/copyAssets.ts +1 -1
- package/src/vite/tasks/generateSitemap.ts +3 -3
- package/src/vite/tasks/prerenderPages.ts +2 -2
- package/src/vite/tasks/runAlepha.ts +2 -2
- package/src/websocket/index.browser.ts +3 -3
- package/src/websocket/index.shared.ts +2 -2
- package/src/websocket/index.ts +4 -4
- package/src/websocket/interfaces/WebSocketInterfaces.ts +3 -3
- package/src/websocket/{descriptors → primitives}/$channel.ts +10 -10
- package/src/websocket/{descriptors → primitives}/$websocket.ts +8 -8
- package/src/websocket/providers/NodeWebSocketServerProvider.ts +7 -7
- package/src/websocket/providers/WebSocketServerProvider.ts +3 -3
- package/src/websocket/services/WebSocketClient.ts +5 -5
- package/src/api-notifications/providers/MemorySmsProvider.ts +0 -20
- package/src/api-notifications/providers/SmsProvider.ts +0 -8
- /package/src/core/{descriptors → primitives}/$atom.ts +0 -0
- /package/src/core/{descriptors → primitives}/$env.ts +0 -0
- /package/src/server-auth/{descriptors → primitives}/$authApple.ts +0 -0
- /package/src/server-links/{descriptors → primitives}/$client.ts +0 -0
package/dist/orm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as alepha1 from "alepha";
|
|
2
|
-
import { Alepha, AlephaError,
|
|
2
|
+
import { Alepha, AlephaError, KIND, Page, Page as Page$1, PageQuery, PageQuery as PageQuery$1, Primitive, Service, Static, StaticEncode, TBigInt, TInteger, TNull, TNumber, TNumberOptions, TObject, TObjectOptions, TOptional, TPage, TSchema, TString, TStringOptions, TUnion, TUnsafe, pageQuerySchema, pageSchema } from "alepha";
|
|
3
3
|
import { DateTime, DateTimeProvider } from "alepha/datetime";
|
|
4
4
|
import * as drizzle_orm0 from "drizzle-orm";
|
|
5
5
|
import { BuildColumns, BuildExtraConfigColumns, SQL, SQLWrapper, sql } from "drizzle-orm";
|
|
@@ -48,9 +48,9 @@ declare const insertSchema: <T extends TObject>(obj: T) => TObjectInsert<T>;
|
|
|
48
48
|
type TObjectUpdate<T extends TObject> = TObject<{ [K in keyof T["properties"]]: T["properties"][K] extends TOptional<infer U> ? TOptional<TUnion<[U, TNull]>> : T["properties"][K] }>;
|
|
49
49
|
declare const updateSchema: <T extends TObject>(schema: T) => TObjectUpdate<T>;
|
|
50
50
|
//#endregion
|
|
51
|
-
//#region src/orm/
|
|
51
|
+
//#region src/orm/primitives/$entity.d.ts
|
|
52
52
|
/**
|
|
53
|
-
* Creates a database entity
|
|
53
|
+
* Creates a database entity primitive that defines table structure using TypeBox schemas.
|
|
54
54
|
*
|
|
55
55
|
* @example
|
|
56
56
|
* ```ts
|
|
@@ -68,10 +68,10 @@ declare const updateSchema: <T extends TObject>(schema: T) => TObjectUpdate<T>;
|
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
70
|
declare const $entity: {
|
|
71
|
-
<TSchema$1 extends TObject>(options:
|
|
72
|
-
[KIND]: typeof
|
|
71
|
+
<TSchema$1 extends TObject>(options: EntityPrimitiveOptions<TSchema$1>): EntityPrimitive<TSchema$1>;
|
|
72
|
+
[KIND]: typeof EntityPrimitive;
|
|
73
73
|
};
|
|
74
|
-
interface
|
|
74
|
+
interface EntityPrimitiveOptions<T extends TObject, Keys = keyof Static<T>> {
|
|
75
75
|
/**
|
|
76
76
|
* The database table name that will be created for this entity.
|
|
77
77
|
* If not provided, name will be inferred from the $repository variable name.
|
|
@@ -183,9 +183,9 @@ interface EntityDescriptorOptions<T extends TObject, Keys = keyof Static<T>> {
|
|
|
183
183
|
*/
|
|
184
184
|
config?: (self: BuildExtraConfigColumns<string, FromSchema<T>, "pg">) => PgTableExtraConfigValue[];
|
|
185
185
|
}
|
|
186
|
-
declare class
|
|
187
|
-
readonly options:
|
|
188
|
-
constructor(options:
|
|
186
|
+
declare class EntityPrimitive<T extends TObject = TObject> {
|
|
187
|
+
readonly options: EntityPrimitiveOptions<T>;
|
|
188
|
+
constructor(options: EntityPrimitiveOptions<T>);
|
|
189
189
|
alias(alias: string): this;
|
|
190
190
|
get cols(): EntityColumns<T>;
|
|
191
191
|
get name(): string;
|
|
@@ -205,7 +205,7 @@ type SchemaToTableConfig<T extends TObject> = {
|
|
|
205
205
|
};
|
|
206
206
|
type EntityColumn<T extends TObject> = {
|
|
207
207
|
name: string;
|
|
208
|
-
entity:
|
|
208
|
+
entity: EntityPrimitive<T>;
|
|
209
209
|
};
|
|
210
210
|
type EntityColumns<T extends TObject> = { [key in keyof T["properties"]]: EntityColumn<T> };
|
|
211
211
|
//#endregion
|
|
@@ -254,7 +254,7 @@ interface PgEnumOptions {
|
|
|
254
254
|
interface PgRefOptions {
|
|
255
255
|
ref: () => {
|
|
256
256
|
name: string;
|
|
257
|
-
entity:
|
|
257
|
+
entity: EntityPrimitive;
|
|
258
258
|
};
|
|
259
259
|
actions?: {
|
|
260
260
|
onUpdate?: UpdateDeleteAction;
|
|
@@ -268,37 +268,34 @@ declare class DbError extends AlephaError {
|
|
|
268
268
|
constructor(message: string, cause?: unknown);
|
|
269
269
|
}
|
|
270
270
|
//#endregion
|
|
271
|
-
//#region src/orm/
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
declare const getAttrFields: (schema: TObject, name: PgSymbolKeys) => PgAttrField[];
|
|
271
|
+
//#region src/orm/errors/DbConflictError.d.ts
|
|
272
|
+
declare class DbConflictError extends DbError {
|
|
273
|
+
readonly name = "DbConflictError";
|
|
274
|
+
readonly status = 409;
|
|
275
|
+
}
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/orm/errors/DbEntityNotFoundError.d.ts
|
|
278
|
+
declare class DbEntityNotFoundError extends DbError {
|
|
279
|
+
readonly name = "DbEntityNotFoundError";
|
|
280
|
+
readonly status = 404;
|
|
281
|
+
constructor(entityName: string);
|
|
282
|
+
}
|
|
283
|
+
//#endregion
|
|
284
|
+
//#region src/orm/errors/DbMigrationError.d.ts
|
|
285
|
+
declare class DbMigrationError extends DbError {
|
|
286
|
+
readonly name = "DbMigrationError";
|
|
287
|
+
constructor(cause?: unknown);
|
|
288
|
+
}
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region src/orm/errors/DbVersionMismatchError.d.ts
|
|
292
291
|
/**
|
|
293
|
-
*
|
|
292
|
+
* Error thrown when there is a version mismatch.
|
|
293
|
+
* It's thrown by {@link Repository#save} when the updated entity version does not match the one in the database.
|
|
294
|
+
* This is used for optimistic concurrency control.
|
|
294
295
|
*/
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
type: TSchema;
|
|
299
|
-
data: any;
|
|
300
|
-
nested?: any[];
|
|
301
|
-
one?: boolean;
|
|
296
|
+
declare class DbVersionMismatchError extends DbError {
|
|
297
|
+
readonly name = "DbVersionMismatchError";
|
|
298
|
+
constructor(table: string, id: any);
|
|
302
299
|
}
|
|
303
300
|
//#endregion
|
|
304
301
|
//#region src/orm/interfaces/FilterOperators.d.ts
|
|
@@ -717,6 +714,55 @@ interface FilterOperators<TValue> {
|
|
|
717
714
|
arrayOverlaps?: TValue;
|
|
718
715
|
}
|
|
719
716
|
//#endregion
|
|
717
|
+
//#region src/orm/interfaces/PgQuery.d.ts
|
|
718
|
+
/**
|
|
719
|
+
* Order direction for sorting
|
|
720
|
+
*/
|
|
721
|
+
type OrderDirection = "asc" | "desc";
|
|
722
|
+
/**
|
|
723
|
+
* Single order by clause with column and direction
|
|
724
|
+
*/
|
|
725
|
+
interface OrderByClause<T> {
|
|
726
|
+
column: keyof T;
|
|
727
|
+
direction?: OrderDirection;
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* Order by parameter - supports 3 modes:
|
|
731
|
+
* 1. String: orderBy: "name" (defaults to ASC)
|
|
732
|
+
* 2. Single object: orderBy: { column: "name", direction: "desc" }
|
|
733
|
+
* 3. Array: orderBy: [{ column: "name", direction: "asc" }, { column: "age", direction: "desc" }]
|
|
734
|
+
*/
|
|
735
|
+
type OrderBy<T> = keyof T | OrderByClause<T> | Array<OrderByClause<T>>;
|
|
736
|
+
/**
|
|
737
|
+
* Generic query interface for PostgreSQL entities
|
|
738
|
+
*/
|
|
739
|
+
interface PgQuery<T extends TObject = TObject> {
|
|
740
|
+
distinct?: (keyof Static<T>)[];
|
|
741
|
+
columns?: (keyof Static<T>)[];
|
|
742
|
+
where?: PgQueryWhereOrSQL<T>;
|
|
743
|
+
limit?: number;
|
|
744
|
+
offset?: number;
|
|
745
|
+
orderBy?: OrderBy<Static<T>>;
|
|
746
|
+
groupBy?: (keyof Static<T>)[];
|
|
747
|
+
}
|
|
748
|
+
type PgStatic<T extends TObject, Relations extends PgRelationMap<T>> = Static<T> & { [K in keyof Relations]: Static<Relations[K]["join"]["schema"]> & (Relations[K]["with"] extends PgRelationMap<TObject> ? PgStatic<Relations[K]["join"]["schema"], Relations[K]["with"]> : {}) };
|
|
749
|
+
interface PgQueryRelations<T extends TObject = TObject, Relations extends PgRelationMap<T> | undefined = undefined> extends PgQuery<T> {
|
|
750
|
+
with?: Relations;
|
|
751
|
+
where?: PgQueryWhereOrSQL<T, Relations>;
|
|
752
|
+
}
|
|
753
|
+
type PgRelationMap<Base extends TObject> = Record<string, PgRelation<Base>>;
|
|
754
|
+
type PgRelation<Base extends TObject> = {
|
|
755
|
+
type?: "left" | "inner" | "right";
|
|
756
|
+
join: {
|
|
757
|
+
schema: TObject;
|
|
758
|
+
name: string;
|
|
759
|
+
};
|
|
760
|
+
on: SQLWrapper | [keyof Static<Base>, {
|
|
761
|
+
name: string;
|
|
762
|
+
}];
|
|
763
|
+
with?: PgRelationMap<TObject>;
|
|
764
|
+
};
|
|
765
|
+
//#endregion
|
|
720
766
|
//#region src/orm/interfaces/PgQueryWhere.d.ts
|
|
721
767
|
type PgQueryWhere<T extends TObject, Relations extends PgRelationMap<TObject> | undefined = undefined> = (PgQueryWhereOperators<T> & PgQueryWhereConditions<T>) | (PgQueryWhereRelations<Relations> & PgQueryWhereOperators<T> & PgQueryWhereConditions<T, Relations>);
|
|
722
768
|
type PgQueryWhereOrSQL<T extends TObject, Relations extends PgRelationMap<TObject> | undefined = undefined> = SQLWrapper | PgQueryWhere<T, Relations>;
|
|
@@ -796,71 +842,122 @@ type PgQueryWhereRelations<Relations extends PgRelationMap<TObject> | undefined
|
|
|
796
842
|
*/
|
|
797
843
|
type NestedJsonbQuery<T> = T extends object ? T extends Array<infer U> ? U extends object ? { [K in keyof U]?: FilterOperators<U[K]> | U[K] } : FilterOperators<U> | U : { [K in keyof T]?: FilterOperators<T[K]> | T[K] | (T[K] extends object ? NestedJsonbQuery<T[K]> : never) } : FilterOperators<T> | T;
|
|
798
844
|
//#endregion
|
|
799
|
-
//#region src/orm/
|
|
845
|
+
//#region src/orm/helpers/parseQueryString.d.ts
|
|
800
846
|
/**
|
|
801
|
-
*
|
|
847
|
+
* Parse a string query into a PgQueryWhere object.
|
|
848
|
+
*
|
|
849
|
+
* Supported syntax:
|
|
850
|
+
* - Simple equality: "name=John"
|
|
851
|
+
* - Wildcard patterns: "name=John*" (startsWith), "name=*John" (endsWith), "name=*John*" (contains)
|
|
852
|
+
* - Operators: "age>18", "age>=18", "age<65", "age<=65", "status!=active"
|
|
853
|
+
* - NULL checks: "deletedAt=null", "email!=null"
|
|
854
|
+
* - IN arrays: "status=[pending,active]"
|
|
855
|
+
* - AND conditions: "name=John&age>18"
|
|
856
|
+
* - OR conditions: "name=John|email=john@example.com"
|
|
857
|
+
* - Nested AND/OR: "(name=John|name=Jane)&age>18"
|
|
858
|
+
* - JSONB nested: "profile.city=Paris"
|
|
859
|
+
*
|
|
860
|
+
* @example
|
|
861
|
+
* ```ts
|
|
862
|
+
* // Simple equality
|
|
863
|
+
* parseQueryString("name=John")
|
|
864
|
+
* // => { name: { eq: "John" } }
|
|
865
|
+
*
|
|
866
|
+
* // Wildcard patterns
|
|
867
|
+
* parseQueryString("name=John*") // startsWith
|
|
868
|
+
* // => { name: { startsWith: "John" } }
|
|
869
|
+
* parseQueryString("name=*Smith") // endsWith
|
|
870
|
+
* // => { name: { endsWith: "Smith" } }
|
|
871
|
+
* parseQueryString("name=*oh*") // contains
|
|
872
|
+
* // => { name: { contains: "oh" } }
|
|
873
|
+
*
|
|
874
|
+
* // Multiple conditions
|
|
875
|
+
* parseQueryString("name=John&age>18")
|
|
876
|
+
* // => { and: [{ name: { eq: "John" } }, { age: { gt: 18 } }] }
|
|
877
|
+
*
|
|
878
|
+
* // OR conditions
|
|
879
|
+
* parseQueryString("status=active|status=pending")
|
|
880
|
+
* // => { or: [{ status: { eq: "active" } }, { status: { eq: "pending" } }] }
|
|
881
|
+
*
|
|
882
|
+
* // Complex nested
|
|
883
|
+
* parseQueryString("(name=John|name=Jane)&age>18&status!=archived")
|
|
884
|
+
* // => { and: [
|
|
885
|
+
* // { or: [{ name: { eq: "John" } }, { name: { eq: "Jane" } }] },
|
|
886
|
+
* // { age: { gt: 18 } },
|
|
887
|
+
* // { status: { ne: "archived" } }
|
|
888
|
+
* // ] }
|
|
889
|
+
*
|
|
890
|
+
* // JSONB nested query
|
|
891
|
+
* parseQueryString("profile.city=Paris&profile.age>25")
|
|
892
|
+
* // => { profile: { city: { eq: "Paris" }, age: { gt: 25 } } }
|
|
893
|
+
* ```
|
|
802
894
|
*/
|
|
803
|
-
|
|
895
|
+
declare function parseQueryString<T extends TObject>(query: string): PgQueryWhere<T>;
|
|
804
896
|
/**
|
|
805
|
-
*
|
|
897
|
+
* Helper function to build query strings programmatically
|
|
898
|
+
*
|
|
899
|
+
* @example
|
|
900
|
+
* ```ts
|
|
901
|
+
* buildQueryString({
|
|
902
|
+
* and: [
|
|
903
|
+
* { name: "eq:John" },
|
|
904
|
+
* { age: "gt:18" }
|
|
905
|
+
* ]
|
|
906
|
+
* })
|
|
907
|
+
* // => "name=John&age>18"
|
|
908
|
+
* ```
|
|
806
909
|
*/
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
}
|
|
910
|
+
declare function buildQueryString(where: any): string;
|
|
911
|
+
//#endregion
|
|
912
|
+
//#region src/orm/helpers/pgAttr.d.ts
|
|
811
913
|
/**
|
|
812
|
-
*
|
|
813
|
-
*
|
|
814
|
-
*
|
|
815
|
-
*
|
|
914
|
+
* Decorates a typebox schema with a Postgres attribute.
|
|
915
|
+
*
|
|
916
|
+
* > It's just a fancy way to add Symbols to a field.
|
|
917
|
+
*
|
|
918
|
+
* @example
|
|
919
|
+
* ```ts
|
|
920
|
+
* import { t } from "alepha";
|
|
921
|
+
* import { PG_UPDATED_AT } from "../constants/PG_SYMBOLS";
|
|
922
|
+
*
|
|
923
|
+
* export const updatedAtSchema = pgAttr(
|
|
924
|
+
* t.datetime(), PG_UPDATED_AT,
|
|
925
|
+
* );
|
|
926
|
+
* ```
|
|
816
927
|
*/
|
|
817
|
-
|
|
928
|
+
declare const pgAttr: <T extends TSchema, Attr extends PgSymbolKeys>(type: T, attr: Attr, value?: PgSymbols[Attr]) => PgAttr<T, Attr>;
|
|
818
929
|
/**
|
|
819
|
-
*
|
|
930
|
+
* Retrieves the fields of a schema that have a specific attribute.
|
|
820
931
|
*/
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
with?: Relations;
|
|
833
|
-
where?: PgQueryWhereOrSQL<T, Relations>;
|
|
932
|
+
declare const getAttrFields: (schema: TObject, name: PgSymbolKeys) => PgAttrField[];
|
|
933
|
+
/**
|
|
934
|
+
* Type representation.
|
|
935
|
+
*/
|
|
936
|
+
type PgAttr<T extends TSchema, TAttr extends PgSymbolKeys> = T & { [K in TAttr]: PgSymbols[K] };
|
|
937
|
+
interface PgAttrField {
|
|
938
|
+
key: string;
|
|
939
|
+
type: TSchema;
|
|
940
|
+
data: any;
|
|
941
|
+
nested?: any[];
|
|
942
|
+
one?: boolean;
|
|
834
943
|
}
|
|
835
|
-
type PgRelationMap<Base extends TObject> = Record<string, PgRelation<Base>>;
|
|
836
|
-
type PgRelation<Base extends TObject> = {
|
|
837
|
-
type?: "left" | "inner" | "right";
|
|
838
|
-
join: {
|
|
839
|
-
schema: TObject;
|
|
840
|
-
name: string;
|
|
841
|
-
};
|
|
842
|
-
on: SQLWrapper | [keyof Static<Base>, {
|
|
843
|
-
name: string;
|
|
844
|
-
}];
|
|
845
|
-
with?: PgRelationMap<TObject>;
|
|
846
|
-
};
|
|
847
944
|
//#endregion
|
|
848
|
-
//#region src/orm/
|
|
945
|
+
//#region src/orm/primitives/$sequence.d.ts
|
|
849
946
|
/**
|
|
850
|
-
* Creates a PostgreSQL sequence
|
|
947
|
+
* Creates a PostgreSQL sequence primitive for generating unique numeric values.
|
|
851
948
|
*/
|
|
852
949
|
declare const $sequence: {
|
|
853
|
-
(options?:
|
|
854
|
-
[KIND]: typeof
|
|
950
|
+
(options?: SequencePrimitiveOptions): SequencePrimitive;
|
|
951
|
+
[KIND]: typeof SequencePrimitive;
|
|
855
952
|
};
|
|
856
|
-
interface
|
|
953
|
+
interface SequencePrimitiveOptions extends PgSequenceOptions {
|
|
857
954
|
/**
|
|
858
955
|
* The name of the sequence. If not provided, the property key will be used.
|
|
859
956
|
*/
|
|
860
957
|
name?: string;
|
|
861
958
|
provider?: DatabaseProvider;
|
|
862
959
|
}
|
|
863
|
-
declare class
|
|
960
|
+
declare class SequencePrimitive extends Primitive<SequencePrimitiveOptions> {
|
|
864
961
|
readonly provider: DatabaseProvider;
|
|
865
962
|
onInit(): void;
|
|
866
963
|
get name(): string;
|
|
@@ -891,22 +988,22 @@ interface TableConfigBuilders<TConfig> {
|
|
|
891
988
|
}) => TConfig;
|
|
892
989
|
}
|
|
893
990
|
/**
|
|
894
|
-
* Abstract base class for transforming Alepha
|
|
991
|
+
* Abstract base class for transforming Alepha Primitives (Entity, Sequence, etc...)
|
|
895
992
|
* into drizzle models (tables, enums, sequences, etc...).
|
|
896
993
|
*/
|
|
897
994
|
declare abstract class ModelBuilder {
|
|
898
995
|
/**
|
|
899
|
-
* Build a table from an entity
|
|
996
|
+
* Build a table from an entity primitive.
|
|
900
997
|
*/
|
|
901
|
-
abstract buildTable(entity:
|
|
998
|
+
abstract buildTable(entity: EntityPrimitive, options: {
|
|
902
999
|
tables: Map<string, unknown>;
|
|
903
1000
|
enums: Map<string, unknown>;
|
|
904
1001
|
schema: string;
|
|
905
1002
|
}): void;
|
|
906
1003
|
/**
|
|
907
|
-
* Build a sequence from a sequence
|
|
1004
|
+
* Build a sequence from a sequence primitive.
|
|
908
1005
|
*/
|
|
909
|
-
abstract buildSequence(sequence:
|
|
1006
|
+
abstract buildSequence(sequence: SequencePrimitive, options: {
|
|
910
1007
|
sequences: Map<string, unknown>;
|
|
911
1008
|
schema: string;
|
|
912
1009
|
}): void;
|
|
@@ -918,12 +1015,12 @@ declare abstract class ModelBuilder {
|
|
|
918
1015
|
* Build the table configuration function for any database.
|
|
919
1016
|
* This includes indexes, foreign keys, constraints, and custom config.
|
|
920
1017
|
*
|
|
921
|
-
* @param entity - The entity
|
|
1018
|
+
* @param entity - The entity primitive
|
|
922
1019
|
* @param builders - Database-specific builder functions
|
|
923
1020
|
* @param tableResolver - Function to resolve entity references to table columns
|
|
924
1021
|
* @param customConfigHandler - Optional handler for custom config
|
|
925
1022
|
*/
|
|
926
|
-
protected buildTableConfig<TConfig, TSelf>(entity:
|
|
1023
|
+
protected buildTableConfig<TConfig, TSelf>(entity: EntityPrimitive, builders: TableConfigBuilders<TConfig>, tableResolver?: (entityName: string) => any, customConfigHandler?: (config: any, self: TSelf) => TConfig[]): ((self: TSelf) => TConfig[]) | undefined;
|
|
927
1024
|
}
|
|
928
1025
|
//#endregion
|
|
929
1026
|
//#region src/orm/providers/DrizzleKitProvider.d.ts
|
|
@@ -987,9 +1084,9 @@ declare abstract class DatabaseProvider {
|
|
|
987
1084
|
readonly sequences: Map<string, unknown>;
|
|
988
1085
|
get name(): string;
|
|
989
1086
|
get schema(): string;
|
|
990
|
-
table<T extends TObject>(entity:
|
|
991
|
-
registerEntity(entity:
|
|
992
|
-
registerSequence(sequence:
|
|
1087
|
+
table<T extends TObject>(entity: EntityPrimitive<T>): PgTableWithColumns<SchemaToTableConfig<T>>;
|
|
1088
|
+
registerEntity(entity: EntityPrimitive): void;
|
|
1089
|
+
registerSequence(sequence: SequencePrimitive): void;
|
|
993
1090
|
abstract execute(statement: SQLLike): Promise<Record<string, unknown>[]>;
|
|
994
1091
|
run<T extends TObject>(statement: SQLLike, schema: T): Promise<Array<Static<T>>>;
|
|
995
1092
|
/**
|
|
@@ -1197,13 +1294,13 @@ declare class PgRelationManager {
|
|
|
1197
1294
|
//#endregion
|
|
1198
1295
|
//#region src/orm/services/Repository.d.ts
|
|
1199
1296
|
declare abstract class Repository<T extends TObject> {
|
|
1200
|
-
readonly entity:
|
|
1297
|
+
readonly entity: EntityPrimitive<T>;
|
|
1201
1298
|
readonly provider: DatabaseProvider;
|
|
1202
1299
|
protected readonly relationManager: PgRelationManager;
|
|
1203
1300
|
protected readonly queryManager: QueryManager;
|
|
1204
1301
|
protected readonly dateTimeProvider: DateTimeProvider;
|
|
1205
1302
|
protected readonly alepha: Alepha;
|
|
1206
|
-
constructor(entity:
|
|
1303
|
+
constructor(entity: EntityPrimitive<T>, provider?: typeof DatabaseProvider);
|
|
1207
1304
|
/**
|
|
1208
1305
|
* Represents the primary key of the table.
|
|
1209
1306
|
* - Key is the name of the primary key column.
|
|
@@ -1469,17 +1566,17 @@ interface StatementOptions {
|
|
|
1469
1566
|
now?: DateTime | string;
|
|
1470
1567
|
}
|
|
1471
1568
|
//#endregion
|
|
1472
|
-
//#region src/orm/
|
|
1569
|
+
//#region src/orm/primitives/$repository.d.ts
|
|
1473
1570
|
/**
|
|
1474
1571
|
* Get the repository for the given entity.
|
|
1475
1572
|
*/
|
|
1476
|
-
declare const $repository: <T extends TObject>(entity:
|
|
1573
|
+
declare const $repository: <T extends TObject>(entity: EntityPrimitive<T>) => Repository<T>;
|
|
1477
1574
|
//#endregion
|
|
1478
|
-
//#region src/orm/
|
|
1575
|
+
//#region src/orm/primitives/$transaction.d.ts
|
|
1479
1576
|
/**
|
|
1480
|
-
* Creates a transaction
|
|
1577
|
+
* Creates a transaction primitive for database operations requiring atomicity and consistency.
|
|
1481
1578
|
*
|
|
1482
|
-
* This
|
|
1579
|
+
* This primitive provides a convenient way to wrap database operations in PostgreSQL
|
|
1483
1580
|
* transactions, ensuring ACID properties and automatic retry logic for version conflicts.
|
|
1484
1581
|
* It integrates seamlessly with the repository pattern and provides built-in handling
|
|
1485
1582
|
* for optimistic locking scenarios with automatic retry on version mismatches.
|
|
@@ -1491,8 +1588,8 @@ declare const $repository: <T extends TObject>(entity: EntityDescriptor<T>) => R
|
|
|
1491
1588
|
* - Transactions are automatically rolled back on any unhandled error
|
|
1492
1589
|
* - Use appropriate isolation levels based on your consistency requirements
|
|
1493
1590
|
*/
|
|
1494
|
-
declare const $transaction: <T extends any[], R>(opts:
|
|
1495
|
-
interface
|
|
1591
|
+
declare const $transaction: <T extends any[], R>(opts: TransactionPrimitiveOptions<T, R>) => alepha_retry0.RetryPrimitiveFn<(...args: T) => Promise<R>>;
|
|
1592
|
+
interface TransactionPrimitiveOptions<T extends any[], R> {
|
|
1496
1593
|
/**
|
|
1497
1594
|
* Transaction handler function that contains all database operations to be executed atomically.
|
|
1498
1595
|
*
|
|
@@ -1596,120 +1693,23 @@ interface TransactionDescriptorOptions<T extends any[], R> {
|
|
|
1596
1693
|
}
|
|
1597
1694
|
type TransactionContext = PgTransaction<any, any, any>;
|
|
1598
1695
|
//#endregion
|
|
1599
|
-
//#region src/orm/errors/DbConflictError.d.ts
|
|
1600
|
-
declare class DbConflictError extends DbError {
|
|
1601
|
-
readonly name = "DbConflictError";
|
|
1602
|
-
readonly status = 409;
|
|
1603
|
-
}
|
|
1604
|
-
//#endregion
|
|
1605
|
-
//#region src/orm/errors/DbEntityNotFoundError.d.ts
|
|
1606
|
-
declare class DbEntityNotFoundError extends DbError {
|
|
1607
|
-
readonly name = "DbEntityNotFoundError";
|
|
1608
|
-
readonly status = 404;
|
|
1609
|
-
constructor(entityName: string);
|
|
1610
|
-
}
|
|
1611
|
-
//#endregion
|
|
1612
|
-
//#region src/orm/errors/DbMigrationError.d.ts
|
|
1613
|
-
declare class DbMigrationError extends DbError {
|
|
1614
|
-
readonly name = "DbMigrationError";
|
|
1615
|
-
constructor(cause?: unknown);
|
|
1616
|
-
}
|
|
1617
|
-
//#endregion
|
|
1618
|
-
//#region src/orm/errors/DbVersionMismatchError.d.ts
|
|
1619
|
-
/**
|
|
1620
|
-
* Error thrown when there is a version mismatch.
|
|
1621
|
-
* It's thrown by {@link Repository#save} when the updated entity version does not match the one in the database.
|
|
1622
|
-
* This is used for optimistic concurrency control.
|
|
1623
|
-
*/
|
|
1624
|
-
declare class DbVersionMismatchError extends DbError {
|
|
1625
|
-
readonly name = "DbVersionMismatchError";
|
|
1626
|
-
constructor(table: string, id: any);
|
|
1627
|
-
}
|
|
1628
|
-
//#endregion
|
|
1629
|
-
//#region src/orm/helpers/parseQueryString.d.ts
|
|
1630
|
-
/**
|
|
1631
|
-
* Parse a string query into a PgQueryWhere object.
|
|
1632
|
-
*
|
|
1633
|
-
* Supported syntax:
|
|
1634
|
-
* - Simple equality: "name=John"
|
|
1635
|
-
* - Wildcard patterns: "name=John*" (startsWith), "name=*John" (endsWith), "name=*John*" (contains)
|
|
1636
|
-
* - Operators: "age>18", "age>=18", "age<65", "age<=65", "status!=active"
|
|
1637
|
-
* - NULL checks: "deletedAt=null", "email!=null"
|
|
1638
|
-
* - IN arrays: "status=[pending,active]"
|
|
1639
|
-
* - AND conditions: "name=John&age>18"
|
|
1640
|
-
* - OR conditions: "name=John|email=john@example.com"
|
|
1641
|
-
* - Nested AND/OR: "(name=John|name=Jane)&age>18"
|
|
1642
|
-
* - JSONB nested: "profile.city=Paris"
|
|
1643
|
-
*
|
|
1644
|
-
* @example
|
|
1645
|
-
* ```ts
|
|
1646
|
-
* // Simple equality
|
|
1647
|
-
* parseQueryString("name=John")
|
|
1648
|
-
* // => { name: { eq: "John" } }
|
|
1649
|
-
*
|
|
1650
|
-
* // Wildcard patterns
|
|
1651
|
-
* parseQueryString("name=John*") // startsWith
|
|
1652
|
-
* // => { name: { startsWith: "John" } }
|
|
1653
|
-
* parseQueryString("name=*Smith") // endsWith
|
|
1654
|
-
* // => { name: { endsWith: "Smith" } }
|
|
1655
|
-
* parseQueryString("name=*oh*") // contains
|
|
1656
|
-
* // => { name: { contains: "oh" } }
|
|
1657
|
-
*
|
|
1658
|
-
* // Multiple conditions
|
|
1659
|
-
* parseQueryString("name=John&age>18")
|
|
1660
|
-
* // => { and: [{ name: { eq: "John" } }, { age: { gt: 18 } }] }
|
|
1661
|
-
*
|
|
1662
|
-
* // OR conditions
|
|
1663
|
-
* parseQueryString("status=active|status=pending")
|
|
1664
|
-
* // => { or: [{ status: { eq: "active" } }, { status: { eq: "pending" } }] }
|
|
1665
|
-
*
|
|
1666
|
-
* // Complex nested
|
|
1667
|
-
* parseQueryString("(name=John|name=Jane)&age>18&status!=archived")
|
|
1668
|
-
* // => { and: [
|
|
1669
|
-
* // { or: [{ name: { eq: "John" } }, { name: { eq: "Jane" } }] },
|
|
1670
|
-
* // { age: { gt: 18 } },
|
|
1671
|
-
* // { status: { ne: "archived" } }
|
|
1672
|
-
* // ] }
|
|
1673
|
-
*
|
|
1674
|
-
* // JSONB nested query
|
|
1675
|
-
* parseQueryString("profile.city=Paris&profile.age>25")
|
|
1676
|
-
* // => { profile: { city: { eq: "Paris" }, age: { gt: 25 } } }
|
|
1677
|
-
* ```
|
|
1678
|
-
*/
|
|
1679
|
-
declare function parseQueryString<T extends TObject>(query: string): PgQueryWhere<T>;
|
|
1680
|
-
/**
|
|
1681
|
-
* Helper function to build query strings programmatically
|
|
1682
|
-
*
|
|
1683
|
-
* @example
|
|
1684
|
-
* ```ts
|
|
1685
|
-
* buildQueryString({
|
|
1686
|
-
* and: [
|
|
1687
|
-
* { name: "eq:John" },
|
|
1688
|
-
* { age: "gt:18" }
|
|
1689
|
-
* ]
|
|
1690
|
-
* })
|
|
1691
|
-
* // => "name=John&age>18"
|
|
1692
|
-
* ```
|
|
1693
|
-
*/
|
|
1694
|
-
declare function buildQueryString(where: any): string;
|
|
1695
|
-
//#endregion
|
|
1696
1696
|
//#region src/orm/services/PostgresModelBuilder.d.ts
|
|
1697
1697
|
declare class PostgresModelBuilder extends ModelBuilder {
|
|
1698
1698
|
protected schemas: Map<string, drizzle_orm_pg_core0.PgSchema<string>>;
|
|
1699
1699
|
protected getPgSchema(name: string): any;
|
|
1700
|
-
buildTable(entity:
|
|
1700
|
+
buildTable(entity: EntityPrimitive<any>, options: {
|
|
1701
1701
|
tables: Map<string, unknown>;
|
|
1702
1702
|
enums: Map<string, unknown>;
|
|
1703
1703
|
schema: string;
|
|
1704
1704
|
}): void;
|
|
1705
|
-
buildSequence(sequence:
|
|
1705
|
+
buildSequence(sequence: SequencePrimitive, options: {
|
|
1706
1706
|
sequences: Map<string, unknown>;
|
|
1707
1707
|
schema: string;
|
|
1708
1708
|
}): void;
|
|
1709
1709
|
/**
|
|
1710
1710
|
* Get PostgreSQL-specific config builder for the table.
|
|
1711
1711
|
*/
|
|
1712
|
-
protected getTableConfig(entity:
|
|
1712
|
+
protected getTableConfig(entity: EntityPrimitive, tables: Map<string, unknown>): ((self: BuildExtraConfigColumns<string, any, "pg">) => PgTableExtraConfigValue[]) | undefined;
|
|
1713
1713
|
schemaToPgColumns: <T extends TObject>(tableName: string, schema: T, nsp: PgSchema, enums: Map<string, unknown>, tables: Map<string, unknown>) => FromSchema<T>;
|
|
1714
1714
|
mapFieldToColumn: (tableName: string, fieldName: string, value: TSchema, nsp: PgSchema, enums: Map<string, any>) => any;
|
|
1715
1715
|
/**
|
|
@@ -1779,11 +1779,11 @@ declare class NodePostgresProvider extends DatabaseProvider {
|
|
|
1779
1779
|
*/
|
|
1780
1780
|
get db(): PostgresJsDatabase;
|
|
1781
1781
|
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
1782
|
-
protected readonly onStart: alepha1.
|
|
1783
|
-
protected readonly onStop: alepha1.
|
|
1782
|
+
protected readonly onStart: alepha1.HookPrimitive<"start">;
|
|
1783
|
+
protected readonly onStop: alepha1.HookPrimitive<"stop">;
|
|
1784
1784
|
connect(): Promise<void>;
|
|
1785
1785
|
close(): Promise<void>;
|
|
1786
|
-
protected migrate: alepha_lock0.
|
|
1786
|
+
protected migrate: alepha_lock0.LockPrimitive<() => Promise<void>>;
|
|
1787
1787
|
/**
|
|
1788
1788
|
* Map the DATABASE_URL to postgres client options.
|
|
1789
1789
|
*/
|
|
@@ -1799,19 +1799,19 @@ declare class NodePostgresProvider extends DatabaseProvider {
|
|
|
1799
1799
|
//#endregion
|
|
1800
1800
|
//#region src/orm/services/SqliteModelBuilder.d.ts
|
|
1801
1801
|
declare class SqliteModelBuilder extends ModelBuilder {
|
|
1802
|
-
buildTable(entity:
|
|
1802
|
+
buildTable(entity: EntityPrimitive<any>, options: {
|
|
1803
1803
|
tables: Map<string, unknown>;
|
|
1804
1804
|
enums: Map<string, unknown>;
|
|
1805
1805
|
schema: string;
|
|
1806
1806
|
}): void;
|
|
1807
|
-
buildSequence(sequence:
|
|
1807
|
+
buildSequence(sequence: SequencePrimitive, options: {
|
|
1808
1808
|
sequences: Map<string, unknown>;
|
|
1809
1809
|
schema: string;
|
|
1810
1810
|
}): void;
|
|
1811
1811
|
/**
|
|
1812
1812
|
* Get SQLite-specific config builder for the table.
|
|
1813
1813
|
*/
|
|
1814
|
-
protected getTableConfig(entity:
|
|
1814
|
+
protected getTableConfig(entity: EntityPrimitive, tables: Map<string, unknown>): ((self: BuildColumns<string, any, "sqlite">) => any) | undefined;
|
|
1815
1815
|
schemaToSqliteColumns: <T extends TObject>(tableName: string, schema: T, enums: Map<string, unknown>, tables: Map<string, unknown>) => SchemaToSqliteBuilder<T>;
|
|
1816
1816
|
mapFieldToSqliteColumn: (tableName: string, fieldName: string, value: TSchema, enums: Map<string, any>) => pg$1.SQLiteIntegerBuilderInitial<string> | pg$1.SQLiteNumericBuilderInitial<string> | pg$1.SQLiteTextBuilderInitial<string, [string, ...string[]], number | undefined> | drizzle_orm0.$Type<pg$1.SQLiteCustomColumnBuilder<{
|
|
1817
1817
|
name: string;
|
|
@@ -1986,7 +1986,7 @@ declare class NodeSqliteProvider extends DatabaseProvider {
|
|
|
1986
1986
|
get url(): string;
|
|
1987
1987
|
execute(query: SQLLike): Promise<Array<Record<string, unknown>>>;
|
|
1988
1988
|
readonly db: PgDatabase<any>;
|
|
1989
|
-
protected readonly onStart: alepha1.
|
|
1989
|
+
protected readonly onStart: alepha1.HookPrimitive<"start">;
|
|
1990
1990
|
protected executeMigrations(migrationsFolder: string): Promise<void>;
|
|
1991
1991
|
}
|
|
1992
1992
|
//#endregion
|
|
@@ -2026,9 +2026,9 @@ declare class PostgresTypeProvider {
|
|
|
2026
2026
|
*
|
|
2027
2027
|
* This is used to track the version of a row in the database.
|
|
2028
2028
|
*
|
|
2029
|
-
* You can use it for optimistic concurrency control (OCC) with {@link
|
|
2029
|
+
* You can use it for optimistic concurrency control (OCC) with {@link RepositoryPrimitive#save}.
|
|
2030
2030
|
*
|
|
2031
|
-
* @see {@link
|
|
2031
|
+
* @see {@link RepositoryPrimitive#save}
|
|
2032
2032
|
* @see {@link PgVersionMismatchError}
|
|
2033
2033
|
*/
|
|
2034
2034
|
readonly version: (options?: TNumberOptions) => PgAttr<PgAttr<TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
|
|
@@ -2067,7 +2067,7 @@ declare class PostgresTypeProvider {
|
|
|
2067
2067
|
}) => PgAttr<T, PgRef>;
|
|
2068
2068
|
/**
|
|
2069
2069
|
* Creates a page schema for a given object schema.
|
|
2070
|
-
* It's used by {@link
|
|
2070
|
+
* It's used by {@link RepositoryPrimitive#paginate} method.
|
|
2071
2071
|
*/
|
|
2072
2072
|
readonly page: <T extends TObject>(resource: T, options?: TObjectOptions) => TPage<T>;
|
|
2073
2073
|
}
|
|
@@ -2076,10 +2076,10 @@ declare const pg: PostgresTypeProvider;
|
|
|
2076
2076
|
//#region src/orm/providers/RepositoryProvider.d.ts
|
|
2077
2077
|
declare class RepositoryProvider {
|
|
2078
2078
|
protected readonly alepha: Alepha;
|
|
2079
|
-
protected readonly registry: Map<
|
|
2079
|
+
protected readonly registry: Map<EntityPrimitive<any>, Service<Repository<any>>>;
|
|
2080
2080
|
getRepositories(provider?: DatabaseProvider): Repository<TObject<alepha1.TProperties>>[];
|
|
2081
|
-
getRepository<T extends TObject>(entity:
|
|
2082
|
-
createClassRepository<T extends TObject>(entity:
|
|
2081
|
+
getRepository<T extends TObject>(entity: EntityPrimitive<T>): Repository<T>;
|
|
2082
|
+
createClassRepository<T extends TObject>(entity: EntityPrimitive<T>): Service<Repository<T>>;
|
|
2083
2083
|
}
|
|
2084
2084
|
//#endregion
|
|
2085
2085
|
//#region src/orm/schemas/legacyIdSchema.d.ts
|
|
@@ -2209,5 +2209,5 @@ declare module "alepha" {
|
|
|
2209
2209
|
*/
|
|
2210
2210
|
declare const AlephaPostgres: alepha1.Service<alepha1.Module>;
|
|
2211
2211
|
//#endregion
|
|
2212
|
-
export { $entity, $repository, $sequence, $transaction, AlephaPostgres, DatabaseProvider, DbConflictError, DbEntityNotFoundError, DbError, DbMigrationError, DbVersionMismatchError, DrizzleKitProvider, EntityColumn, EntityColumns,
|
|
2212
|
+
export { $entity, $repository, $sequence, $transaction, AlephaPostgres, DatabaseProvider, DbConflictError, DbEntityNotFoundError, DbError, DbMigrationError, DbVersionMismatchError, DrizzleKitProvider, EntityColumn, EntityColumns, EntityPrimitive, EntityPrimitiveOptions, FilterOperators, FromSchema, NodePostgresProvider, NodeSqliteProvider, NodeSqliteProviderOptions, OrderBy, OrderByClause, OrderDirection, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, type Page, type PageQuery, PgAttr, PgAttrField, PgDefault, PgEnumOptions, PgIdentityOptions, PgPrimaryKey, PgQuery, PgQueryRelations, PgQueryWhere, PgQueryWhereOrSQL, PgRef, PgRefOptions, PgRelation, PgRelationMap, PgStatic, PgSymbolKeys, PgSymbols, PostgresTypeProvider, Repository, RepositoryProvider, SQLLike, SchemaToTableConfig, SequencePrimitive, SequencePrimitiveOptions, StatementOptions, TObjectInsert, TObjectUpdate, TransactionContext, TransactionPrimitiveOptions, buildQueryString, drizzle_orm0 as drizzle, getAttrFields, insertSchema, legacyIdSchema, nodeSqliteOptions, pageQuerySchema, pageSchema, parseQueryString, pg, pgAttr, schema, sql, updateSchema };
|
|
2213
2213
|
//# sourceMappingURL=index.d.ts.map
|