alepha 0.13.1 → 0.13.3
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.browser.js +80 -0
- package/dist/api-files/index.browser.js.map +1 -0
- 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.browser.js +56 -0
- package/dist/api-jobs/index.browser.js.map +1 -0
- 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.browser.js +382 -0
- package/dist/api-notifications/index.browser.js.map +1 -0
- package/dist/api-notifications/index.d.ts +231 -193
- package/dist/api-notifications/index.js +108 -78
- package/dist/api-notifications/index.js.map +1 -1
- package/dist/api-parameters/index.browser.js +29 -0
- package/dist/api-parameters/index.browser.js.map +1 -0
- 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 +237 -2001
- package/dist/api-users/index.js +969 -4795
- package/dist/api-users/index.js.map +1 -1
- package/dist/api-verifications/index.browser.js +52 -0
- package/dist/api-verifications/index.browser.js.map +1 -0
- package/dist/api-verifications/index.d.ts +119 -97
- package/dist/api-verifications/index.js +1 -1
- package/dist/api-verifications/index.js.map +1 -1
- package/dist/batch/index.d.ts +13 -13
- package/dist/batch/index.js +8 -13
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +14 -14
- package/dist/bucket/index.js +19 -17
- 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/{dist-Dl9Vl7Ur.js → dist-lGnqsKpu.js} +11 -15
- package/dist/cli/dist-lGnqsKpu.js.map +1 -0
- package/dist/cli/index.d.ts +32 -49
- package/dist/cli/index.js +90 -71
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +20 -19
- package/dist/command/index.js +34 -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 +14 -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 +49 -49
- 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 +4 -4
- 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 +53 -53
- package/dist/security/index.js +35 -35
- 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 +92 -92
- 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 +11 -11
- 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 +26 -10
- 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 +128 -57
- package/src/api-files/index.browser.ts +17 -0
- package/src/api-files/services/FileService.ts +5 -7
- package/src/api-jobs/index.browser.ts +15 -0
- 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/controllers/NotificationController.ts +26 -1
- package/src/api-notifications/index.browser.ts +17 -0
- package/src/api-notifications/index.ts +6 -15
- package/src/api-notifications/{descriptors → primitives}/$notification.ts +10 -10
- package/src/api-notifications/schemas/notificationQuerySchema.ts +13 -0
- package/src/api-notifications/services/NotificationSenderService.ts +3 -3
- package/src/api-notifications/services/NotificationService.ts +45 -2
- package/src/api-parameters/index.browser.ts +12 -0
- package/src/api-parameters/index.ts +1 -1
- package/src/api-parameters/{descriptors → primitives}/$config.ts +7 -12
- package/src/api-users/atoms/realmAuthSettingsAtom.ts +3 -1
- package/src/api-users/controllers/UserController.ts +21 -1
- package/src/api-users/index.ts +1 -1
- package/src/api-users/{descriptors → primitives}/$userRealm.ts +40 -17
- package/src/api-users/providers/UserRealmProvider.ts +2 -1
- package/src/api-users/services/SessionService.ts +2 -0
- package/src/api-users/services/UserService.ts +56 -16
- package/src/api-verifications/index.browser.ts +15 -0
- package/src/api-verifications/index.ts +1 -0
- package/src/batch/index.ts +3 -3
- package/src/batch/{descriptors → primitives}/$batch.ts +13 -16
- package/src/batch/providers/BatchProvider.ts +0 -7
- package/src/bucket/index.ts +15 -13
- 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/AlephaCli.ts +27 -1
- package/src/cli/apps/AlephaPackageBuilderCli.ts +27 -2
- package/src/cli/commands/CoreCommands.ts +6 -2
- package/src/cli/commands/DrizzleCommands.ts +6 -6
- package/src/cli/commands/VerifyCommands.ts +1 -1
- package/src/cli/commands/ViteCommands.ts +8 -2
- package/src/cli/services/ProjectUtils.ts +74 -78
- package/src/command/helpers/Asker.ts +10 -0
- 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 +17 -9
- 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/providers/drivers/NodeSqliteProvider.ts +3 -3
- 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 +6 -5
- 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 +24 -9
- 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/dist/cli/dist-Dl9Vl7Ur.js.map +0 -1
- 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
|
@@ -20,7 +20,7 @@ import { Logger } from "../services/Logger.ts";
|
|
|
20
20
|
* }
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
export const $logger = (options:
|
|
23
|
+
export const $logger = (options: LoggerPrimitiveOptions = {}): Logger => {
|
|
24
24
|
const { alepha, service, module } = $context();
|
|
25
25
|
|
|
26
26
|
return $inject(Logger, {
|
|
@@ -32,7 +32,7 @@ export const $logger = (options: LoggerDescriptorOptions = {}): Logger => {
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
export interface
|
|
35
|
+
export interface LoggerPrimitiveOptions {
|
|
36
36
|
name?: string;
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -43,7 +43,7 @@ export class Logger implements LoggerInterface {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
public get level(): string {
|
|
46
|
-
const stateLogLevel = this.alepha.
|
|
46
|
+
const stateLogLevel = this.alepha.store.get("alepha.logger.level");
|
|
47
47
|
if (stateLogLevel && stateLogLevel !== this.appLogLevel) {
|
|
48
48
|
this.appLogLevel = stateLogLevel;
|
|
49
49
|
this.logLevel = this.parseLevel(this.appLogLevel, this.module);
|
|
@@ -2,7 +2,7 @@ import type {
|
|
|
2
2
|
PgSequenceOptions,
|
|
3
3
|
UpdateDeleteAction,
|
|
4
4
|
} from "drizzle-orm/pg-core";
|
|
5
|
-
import type {
|
|
5
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
6
6
|
|
|
7
7
|
export const PG_DEFAULT = Symbol.for("Alepha.Postgres.Default");
|
|
8
8
|
export const PG_PRIMARY_KEY = Symbol.for("Alepha.Postgres.PrimaryKey");
|
|
@@ -56,7 +56,7 @@ export interface PgEnumOptions {
|
|
|
56
56
|
export interface PgRefOptions {
|
|
57
57
|
ref: () => {
|
|
58
58
|
name: string;
|
|
59
|
-
entity:
|
|
59
|
+
entity: EntityPrimitive;
|
|
60
60
|
};
|
|
61
61
|
actions?: {
|
|
62
62
|
onUpdate?: UpdateDeleteAction;
|
package/src/orm/index.browser.ts
CHANGED
|
@@ -9,13 +9,13 @@ export {
|
|
|
9
9
|
pageQuerySchema,
|
|
10
10
|
pageSchema,
|
|
11
11
|
} from "alepha";
|
|
12
|
-
export * from "./descriptors/$entity.ts";
|
|
13
12
|
export * from "./errors/DbEntityNotFoundError.ts";
|
|
14
13
|
export * from "./helpers/parseQueryString.ts";
|
|
15
14
|
export * from "./helpers/pgAttr.ts";
|
|
16
15
|
export * from "./interfaces/FilterOperators.ts";
|
|
17
16
|
export * from "./interfaces/PgQuery.ts";
|
|
18
17
|
export * from "./interfaces/PgQueryWhere.ts";
|
|
18
|
+
export * from "./primitives/$entity.ts";
|
|
19
19
|
export * from "./providers/PostgresTypeProvider.ts";
|
|
20
20
|
export * from "./schemas/legacyIdSchema.ts";
|
|
21
21
|
|
|
@@ -23,6 +23,6 @@ export * from "./schemas/legacyIdSchema.ts";
|
|
|
23
23
|
|
|
24
24
|
export const AlephaPostgres = $module({
|
|
25
25
|
name: "alepha.postgres",
|
|
26
|
-
|
|
26
|
+
primitives: [],
|
|
27
27
|
services: [AlephaDateTime],
|
|
28
28
|
});
|
package/src/orm/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { $module, type Alepha, t } from "alepha";
|
|
2
2
|
import { AlephaDateTime } from "alepha/datetime";
|
|
3
3
|
import * as drizzle from "drizzle-orm";
|
|
4
|
-
import { $entity } from "./
|
|
5
|
-
import { $repository } from "./
|
|
6
|
-
import { $sequence } from "./
|
|
4
|
+
import { $entity } from "./primitives/$entity.ts";
|
|
5
|
+
import { $repository } from "./primitives/$repository.ts";
|
|
6
|
+
import { $sequence } from "./primitives/$sequence.ts";
|
|
7
7
|
import { DrizzleKitProvider } from "./providers/DrizzleKitProvider.ts";
|
|
8
8
|
import { DatabaseProvider } from "./providers/drivers/DatabaseProvider.ts";
|
|
9
9
|
import { NodePostgresProvider } from "./providers/drivers/NodePostgresProvider.ts";
|
|
@@ -95,10 +95,6 @@ export {
|
|
|
95
95
|
export { sql } from "drizzle-orm";
|
|
96
96
|
export * from "drizzle-orm/pg-core";
|
|
97
97
|
export * from "./constants/PG_SYMBOLS.ts";
|
|
98
|
-
export * from "./descriptors/$entity.ts";
|
|
99
|
-
export * from "./descriptors/$repository.ts";
|
|
100
|
-
export * from "./descriptors/$sequence.ts";
|
|
101
|
-
export * from "./descriptors/$transaction.ts";
|
|
102
98
|
export * from "./errors/DbConflictError.ts";
|
|
103
99
|
export * from "./errors/DbEntityNotFoundError.ts";
|
|
104
100
|
export * from "./errors/DbError.ts";
|
|
@@ -109,6 +105,10 @@ export * from "./helpers/pgAttr.ts";
|
|
|
109
105
|
export * from "./interfaces/FilterOperators.ts";
|
|
110
106
|
export * from "./interfaces/PgQuery.ts";
|
|
111
107
|
export * from "./interfaces/PgQueryWhere.ts";
|
|
108
|
+
export * from "./primitives/$entity.ts";
|
|
109
|
+
export * from "./primitives/$repository.ts";
|
|
110
|
+
export * from "./primitives/$sequence.ts";
|
|
111
|
+
export * from "./primitives/$transaction.ts";
|
|
112
112
|
export * from "./providers/DrizzleKitProvider.ts";
|
|
113
113
|
export * from "./providers/drivers/DatabaseProvider.ts";
|
|
114
114
|
export * from "./providers/drivers/NodePostgresProvider.ts";
|
|
@@ -164,7 +164,7 @@ export * from "./types/schema.ts";
|
|
|
164
164
|
*/
|
|
165
165
|
export const AlephaPostgres = $module({
|
|
166
166
|
name: "alepha.postgres",
|
|
167
|
-
|
|
167
|
+
primitives: [$sequence, $entity],
|
|
168
168
|
services: [
|
|
169
169
|
AlephaDateTime,
|
|
170
170
|
DatabaseProvider,
|
|
@@ -9,7 +9,7 @@ import { insertSchema, type TObjectInsert } from "../schemas/insertSchema.ts";
|
|
|
9
9
|
import { type TObjectUpdate, updateSchema } from "../schemas/updateSchema.ts";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Creates a database entity
|
|
12
|
+
* Creates a database entity primitive that defines table structure using TypeBox schemas.
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```ts
|
|
@@ -27,14 +27,14 @@ import { type TObjectUpdate, updateSchema } from "../schemas/updateSchema.ts";
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
export const $entity = <TSchema extends TObject>(
|
|
30
|
-
options:
|
|
31
|
-
):
|
|
32
|
-
return new
|
|
30
|
+
options: EntityPrimitiveOptions<TSchema>,
|
|
31
|
+
): EntityPrimitive<TSchema> => {
|
|
32
|
+
return new EntityPrimitive<TSchema>(options);
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
36
36
|
|
|
37
|
-
export interface
|
|
37
|
+
export interface EntityPrimitiveOptions<
|
|
38
38
|
T extends TObject,
|
|
39
39
|
Keys = keyof Static<T>,
|
|
40
40
|
> {
|
|
@@ -163,15 +163,15 @@ export interface EntityDescriptorOptions<
|
|
|
163
163
|
|
|
164
164
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
165
165
|
|
|
166
|
-
export class
|
|
167
|
-
public readonly options:
|
|
166
|
+
export class EntityPrimitive<T extends TObject = TObject> {
|
|
167
|
+
public readonly options: EntityPrimitiveOptions<T>;
|
|
168
168
|
|
|
169
|
-
constructor(options:
|
|
169
|
+
constructor(options: EntityPrimitiveOptions<T>) {
|
|
170
170
|
this.options = options;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
alias(alias: string): this {
|
|
174
|
-
const aliased = new
|
|
174
|
+
const aliased = new EntityPrimitive<T>(this.options);
|
|
175
175
|
return new Proxy(aliased, {
|
|
176
176
|
get(target, prop, receiver) {
|
|
177
177
|
if (prop === "$alias") {
|
|
@@ -213,7 +213,7 @@ export class EntityDescriptor<T extends TObject = TObject> {
|
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
$entity[KIND] =
|
|
216
|
+
$entity[KIND] = EntityPrimitive;
|
|
217
217
|
|
|
218
218
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
219
219
|
|
|
@@ -235,7 +235,7 @@ export type SchemaToTableConfig<T extends TObject> = {
|
|
|
235
235
|
|
|
236
236
|
export type EntityColumn<T extends TObject> = {
|
|
237
237
|
name: string;
|
|
238
|
-
entity:
|
|
238
|
+
entity: EntityPrimitive<T>;
|
|
239
239
|
};
|
|
240
240
|
|
|
241
241
|
export type EntityColumns<T extends TObject> = {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { $context, $inject, type TObject } from "alepha";
|
|
2
2
|
import { RepositoryProvider } from "../providers/RepositoryProvider.ts";
|
|
3
3
|
import type { Repository } from "../services/Repository.ts";
|
|
4
|
-
import type {
|
|
4
|
+
import type { EntityPrimitive } from "./$entity.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Get the repository for the given entity.
|
|
8
8
|
*/
|
|
9
9
|
export const $repository = <T extends TObject>(
|
|
10
|
-
entity:
|
|
10
|
+
entity: EntityPrimitive<T>,
|
|
11
11
|
): Repository<T> => {
|
|
12
12
|
const { alepha } = $context();
|
|
13
13
|
const repositoryProvider = alepha.inject(RepositoryProvider);
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createPrimitive, KIND, Primitive } from "alepha";
|
|
2
2
|
import { sql } from "drizzle-orm";
|
|
3
3
|
import type { PgSequenceOptions } from "drizzle-orm/pg-core";
|
|
4
4
|
import { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Creates a PostgreSQL sequence
|
|
7
|
+
* Creates a PostgreSQL sequence primitive for generating unique numeric values.
|
|
8
8
|
*/
|
|
9
9
|
export const $sequence = (
|
|
10
|
-
options:
|
|
11
|
-
):
|
|
12
|
-
return
|
|
10
|
+
options: SequencePrimitiveOptions = {},
|
|
11
|
+
): SequencePrimitive => {
|
|
12
|
+
return createPrimitive(SequencePrimitive, options);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
16
16
|
|
|
17
|
-
export interface
|
|
17
|
+
export interface SequencePrimitiveOptions extends PgSequenceOptions {
|
|
18
18
|
/**
|
|
19
19
|
* The name of the sequence. If not provided, the property key will be used.
|
|
20
20
|
*/
|
|
@@ -25,7 +25,7 @@ export interface SequenceDescriptorOptions extends PgSequenceOptions {
|
|
|
25
25
|
|
|
26
26
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
27
27
|
|
|
28
|
-
export class
|
|
28
|
+
export class SequencePrimitive extends Primitive<SequencePrimitiveOptions> {
|
|
29
29
|
public readonly provider = this.$provider();
|
|
30
30
|
|
|
31
31
|
public onInit() {
|
|
@@ -57,4 +57,4 @@ export class SequenceDescriptor extends Descriptor<SequenceDescriptorOptions> {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
$sequence[KIND] =
|
|
60
|
+
$sequence[KIND] = SequencePrimitive;
|
|
@@ -6,9 +6,9 @@ import { DbVersionMismatchError } from "../errors/DbVersionMismatchError.ts";
|
|
|
6
6
|
import { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Creates a transaction
|
|
9
|
+
* Creates a transaction primitive for database operations requiring atomicity and consistency.
|
|
10
10
|
*
|
|
11
|
-
* This
|
|
11
|
+
* This primitive provides a convenient way to wrap database operations in PostgreSQL
|
|
12
12
|
* transactions, ensuring ACID properties and automatic retry logic for version conflicts.
|
|
13
13
|
* It integrates seamlessly with the repository pattern and provides built-in handling
|
|
14
14
|
* for optimistic locking scenarios with automatic retry on version mismatches.
|
|
@@ -21,7 +21,7 @@ import { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
|
21
21
|
* - Use appropriate isolation levels based on your consistency requirements
|
|
22
22
|
*/
|
|
23
23
|
export const $transaction = <T extends any[], R>(
|
|
24
|
-
opts:
|
|
24
|
+
opts: TransactionPrimitiveOptions<T, R>,
|
|
25
25
|
) => {
|
|
26
26
|
const { alepha } = $context();
|
|
27
27
|
const provider = alepha.inject(DatabaseProvider);
|
|
@@ -38,7 +38,7 @@ export const $transaction = <T extends any[], R>(
|
|
|
38
38
|
|
|
39
39
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
40
40
|
|
|
41
|
-
export interface
|
|
41
|
+
export interface TransactionPrimitiveOptions<T extends any[], R> {
|
|
42
42
|
/**
|
|
43
43
|
* Transaction handler function that contains all database operations to be executed atomically.
|
|
44
44
|
*
|
|
@@ -159,9 +159,9 @@ export class PostgresTypeProvider {
|
|
|
159
159
|
*
|
|
160
160
|
* This is used to track the version of a row in the database.
|
|
161
161
|
*
|
|
162
|
-
* You can use it for optimistic concurrency control (OCC) with {@link
|
|
162
|
+
* You can use it for optimistic concurrency control (OCC) with {@link RepositoryPrimitive#save}.
|
|
163
163
|
*
|
|
164
|
-
* @see {@link
|
|
164
|
+
* @see {@link RepositoryPrimitive#save}
|
|
165
165
|
* @see {@link PgVersionMismatchError}
|
|
166
166
|
*/
|
|
167
167
|
public readonly version = (options: TNumberOptions = {}) =>
|
|
@@ -239,7 +239,7 @@ export class PostgresTypeProvider {
|
|
|
239
239
|
|
|
240
240
|
/**
|
|
241
241
|
* Creates a page schema for a given object schema.
|
|
242
|
-
* It's used by {@link
|
|
242
|
+
* It's used by {@link RepositoryPrimitive#paginate} method.
|
|
243
243
|
*/
|
|
244
244
|
public readonly page = <T extends TObject>(
|
|
245
245
|
resource: T,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { $inject, Alepha, type Service, type TObject } from "alepha";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
3
3
|
import { Repository } from "../services/Repository.ts";
|
|
4
4
|
import type { DatabaseProvider } from "./drivers/DatabaseProvider.ts";
|
|
5
5
|
|
|
6
6
|
export class RepositoryProvider {
|
|
7
7
|
protected readonly alepha = $inject(Alepha);
|
|
8
8
|
protected readonly registry = new Map<
|
|
9
|
-
|
|
9
|
+
EntityPrimitive<any>,
|
|
10
10
|
Service<Repository<any>>
|
|
11
11
|
>();
|
|
12
12
|
|
|
@@ -21,14 +21,14 @@ export class RepositoryProvider {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
public getRepository<T extends TObject>(
|
|
24
|
-
entity:
|
|
24
|
+
entity: EntityPrimitive<T>,
|
|
25
25
|
): Repository<T> {
|
|
26
26
|
const RepositoryClass = this.createClassRepository(entity);
|
|
27
27
|
return this.alepha.inject(RepositoryClass);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
public createClassRepository<T extends TObject>(
|
|
31
|
-
entity:
|
|
31
|
+
entity: EntityPrimitive<T>,
|
|
32
32
|
): Service<Repository<T>> {
|
|
33
33
|
let name = entity.name.charAt(0).toUpperCase() + entity.name.slice(1);
|
|
34
34
|
if (name.endsWith("s")) {
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
type PgDatabase,
|
|
14
14
|
type PgTableWithColumns,
|
|
15
15
|
} from "drizzle-orm/pg-core";
|
|
16
|
+
import { DbError } from "../../errors/DbError.ts";
|
|
16
17
|
import type {
|
|
17
|
-
|
|
18
|
+
EntityPrimitive,
|
|
18
19
|
SchemaToTableConfig,
|
|
19
|
-
} from "../../
|
|
20
|
-
import type {
|
|
21
|
-
import { DbError } from "../../errors/DbError.ts";
|
|
20
|
+
} from "../../primitives/$entity.ts";
|
|
21
|
+
import type { SequencePrimitive } from "../../primitives/$sequence.ts";
|
|
22
22
|
import type { ModelBuilder } from "../../services/ModelBuilder.ts";
|
|
23
23
|
import type { DrizzleKitProvider } from "../DrizzleKitProvider.ts";
|
|
24
24
|
|
|
@@ -46,7 +46,7 @@ export abstract class DatabaseProvider {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
public table<T extends TObject>(
|
|
49
|
-
entity:
|
|
49
|
+
entity: EntityPrimitive<T>,
|
|
50
50
|
): PgTableWithColumns<SchemaToTableConfig<T>> {
|
|
51
51
|
const table = this.tables.get(entity.name);
|
|
52
52
|
if (!table) {
|
|
@@ -65,11 +65,11 @@ export abstract class DatabaseProvider {
|
|
|
65
65
|
return table as PgTableWithColumns<SchemaToTableConfig<T>>;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
public registerEntity(entity:
|
|
68
|
+
public registerEntity(entity: EntityPrimitive) {
|
|
69
69
|
this.builder.buildTable(entity, this);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
public registerSequence(sequence:
|
|
72
|
+
public registerSequence(sequence: SequencePrimitive) {
|
|
73
73
|
this.builder.buildSequence(sequence, this);
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -82,10 +82,10 @@ export class NodeSqliteProvider extends DatabaseProvider {
|
|
|
82
82
|
return path;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
if (this.alepha.isTest()) {
|
|
85
|
+
if (this.alepha.isTest() || this.alepha.isServerless()) {
|
|
86
86
|
return ":memory:";
|
|
87
87
|
} else {
|
|
88
|
-
return "node_modules/sqlite.db";
|
|
88
|
+
return "node_modules/.alepha/sqlite.db";
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -149,7 +149,7 @@ export class NodeSqliteProvider extends DatabaseProvider {
|
|
|
149
149
|
if (filepath !== ":memory:" && filepath !== "") {
|
|
150
150
|
const dirname = filepath.split("/").slice(0, -1).join("/");
|
|
151
151
|
if (dirname) {
|
|
152
|
-
await mkdir(dirname, { recursive: true });
|
|
152
|
+
await mkdir(dirname, { recursive: true }).catch(() => null);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SQL } from "drizzle-orm";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
3
|
+
import type { SequencePrimitive } from "../primitives/$sequence.ts";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Database-specific table configuration functions
|
|
@@ -24,15 +24,15 @@ export interface TableConfigBuilders<TConfig> {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
* Abstract base class for transforming Alepha
|
|
27
|
+
* Abstract base class for transforming Alepha Primitives (Entity, Sequence, etc...)
|
|
28
28
|
* into drizzle models (tables, enums, sequences, etc...).
|
|
29
29
|
*/
|
|
30
30
|
export abstract class ModelBuilder {
|
|
31
31
|
/**
|
|
32
|
-
* Build a table from an entity
|
|
32
|
+
* Build a table from an entity primitive.
|
|
33
33
|
*/
|
|
34
34
|
abstract buildTable(
|
|
35
|
-
entity:
|
|
35
|
+
entity: EntityPrimitive,
|
|
36
36
|
options: {
|
|
37
37
|
tables: Map<string, unknown>;
|
|
38
38
|
enums: Map<string, unknown>;
|
|
@@ -41,10 +41,10 @@ export abstract class ModelBuilder {
|
|
|
41
41
|
): void;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* Build a sequence from a sequence
|
|
44
|
+
* Build a sequence from a sequence primitive.
|
|
45
45
|
*/
|
|
46
46
|
abstract buildSequence(
|
|
47
|
-
sequence:
|
|
47
|
+
sequence: SequencePrimitive,
|
|
48
48
|
options: {
|
|
49
49
|
sequences: Map<string, unknown>;
|
|
50
50
|
schema: string;
|
|
@@ -65,13 +65,13 @@ export abstract class ModelBuilder {
|
|
|
65
65
|
* Build the table configuration function for any database.
|
|
66
66
|
* This includes indexes, foreign keys, constraints, and custom config.
|
|
67
67
|
*
|
|
68
|
-
* @param entity - The entity
|
|
68
|
+
* @param entity - The entity primitive
|
|
69
69
|
* @param builders - Database-specific builder functions
|
|
70
70
|
* @param tableResolver - Function to resolve entity references to table columns
|
|
71
71
|
* @param customConfigHandler - Optional handler for custom config
|
|
72
72
|
*/
|
|
73
73
|
protected buildTableConfig<TConfig, TSelf>(
|
|
74
|
-
entity:
|
|
74
|
+
entity: EntityPrimitive,
|
|
75
75
|
builders: TableConfigBuilders<TConfig>,
|
|
76
76
|
tableResolver?: (entityName: string) => any,
|
|
77
77
|
customConfigHandler?: (config: any, self: TSelf) => TConfig[],
|
|
@@ -2,8 +2,8 @@ import { type TObject, TypeBoxValue, t } from "alepha";
|
|
|
2
2
|
import { getTableName, type SQL, sql } from "drizzle-orm";
|
|
3
3
|
import type { PgSelectBase, PgTableWithColumns } from "drizzle-orm/pg-core";
|
|
4
4
|
import { isSQLWrapper } from "drizzle-orm/sql/sql";
|
|
5
|
-
import type { EntityDescriptor } from "../descriptors/$entity.ts";
|
|
6
5
|
import type { PgRelationMap } from "../interfaces/PgQuery.ts";
|
|
6
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
7
7
|
import type { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
8
8
|
import type { PgJoin } from "./QueryManager.ts";
|
|
9
9
|
|
|
@@ -20,7 +20,7 @@ export class PgRelationManager {
|
|
|
20
20
|
parentKey?: string,
|
|
21
21
|
) {
|
|
22
22
|
for (const [key, join] of Object.entries(withRelations)) {
|
|
23
|
-
const from = provider.table(join.join as
|
|
23
|
+
const from = provider.table(join.join as EntityPrimitive);
|
|
24
24
|
const on = isSQLWrapper(join.on)
|
|
25
25
|
? (join.on as SQL)
|
|
26
26
|
: sql`${table[join.on[0] as string]} = ${from[join.on[1].name]}`;
|
|
@@ -27,8 +27,8 @@ import {
|
|
|
27
27
|
type PgIdentityOptions,
|
|
28
28
|
type PgRefOptions,
|
|
29
29
|
} from "../constants/PG_SYMBOLS.ts";
|
|
30
|
-
import type {
|
|
31
|
-
import type {
|
|
30
|
+
import type { EntityPrimitive, FromSchema } from "../primitives/$entity.ts";
|
|
31
|
+
import type { SequencePrimitive } from "../primitives/$sequence.ts";
|
|
32
32
|
import { byte } from "../types/byte.ts";
|
|
33
33
|
import { schema } from "../types/schema.ts";
|
|
34
34
|
import { ModelBuilder } from "./ModelBuilder.ts";
|
|
@@ -57,7 +57,7 @@ export class PostgresModelBuilder extends ModelBuilder {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
public buildTable(
|
|
60
|
-
entity:
|
|
60
|
+
entity: EntityPrimitive<any>,
|
|
61
61
|
options: {
|
|
62
62
|
tables: Map<string, unknown>;
|
|
63
63
|
enums: Map<string, unknown>;
|
|
@@ -88,7 +88,7 @@ export class PostgresModelBuilder extends ModelBuilder {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
public buildSequence(
|
|
91
|
-
sequence:
|
|
91
|
+
sequence: SequencePrimitive,
|
|
92
92
|
options: {
|
|
93
93
|
sequences: Map<string, unknown>;
|
|
94
94
|
schema: string;
|
|
@@ -113,7 +113,7 @@ export class PostgresModelBuilder extends ModelBuilder {
|
|
|
113
113
|
* Get PostgreSQL-specific config builder for the table.
|
|
114
114
|
*/
|
|
115
115
|
protected getTableConfig(
|
|
116
|
-
entity:
|
|
116
|
+
entity: EntityPrimitive,
|
|
117
117
|
tables: Map<string, unknown>,
|
|
118
118
|
):
|
|
119
119
|
| ((
|
|
@@ -30,10 +30,6 @@ import {
|
|
|
30
30
|
PG_UPDATED_AT,
|
|
31
31
|
PG_VERSION,
|
|
32
32
|
} from "../constants/PG_SYMBOLS.ts";
|
|
33
|
-
import type {
|
|
34
|
-
EntityDescriptor,
|
|
35
|
-
SchemaToTableConfig,
|
|
36
|
-
} from "../descriptors/$entity.ts";
|
|
37
33
|
import { DbConflictError } from "../errors/DbConflictError.ts";
|
|
38
34
|
import { DbEntityNotFoundError } from "../errors/DbEntityNotFoundError.ts";
|
|
39
35
|
import { DbError } from "../errors/DbError.ts";
|
|
@@ -49,6 +45,10 @@ import type {
|
|
|
49
45
|
PgQueryWhere,
|
|
50
46
|
PgQueryWhereOrSQL,
|
|
51
47
|
} from "../interfaces/PgQueryWhere.ts";
|
|
48
|
+
import type {
|
|
49
|
+
EntityPrimitive,
|
|
50
|
+
SchemaToTableConfig,
|
|
51
|
+
} from "../primitives/$entity.ts";
|
|
52
52
|
import {
|
|
53
53
|
DatabaseProvider,
|
|
54
54
|
type SQLLike,
|
|
@@ -59,7 +59,7 @@ import { PgRelationManager } from "./PgRelationManager.ts";
|
|
|
59
59
|
import { type PgJoin, QueryManager } from "./QueryManager.ts";
|
|
60
60
|
|
|
61
61
|
export abstract class Repository<T extends TObject> {
|
|
62
|
-
public readonly entity:
|
|
62
|
+
public readonly entity: EntityPrimitive<T>;
|
|
63
63
|
public readonly provider: DatabaseProvider;
|
|
64
64
|
|
|
65
65
|
protected readonly relationManager = $inject(PgRelationManager);
|
|
@@ -67,10 +67,10 @@ export abstract class Repository<T extends TObject> {
|
|
|
67
67
|
protected readonly dateTimeProvider = $inject(DateTimeProvider);
|
|
68
68
|
protected readonly alepha = $inject(Alepha);
|
|
69
69
|
|
|
70
|
-
constructor(entity:
|
|
70
|
+
constructor(entity: EntityPrimitive<T>, provider = DatabaseProvider) {
|
|
71
71
|
this.entity = entity;
|
|
72
72
|
this.provider = this.alepha.inject(provider);
|
|
73
|
-
this.provider.registerEntity(entity as
|
|
73
|
+
this.provider.registerEntity(entity as EntityPrimitive);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/**
|
|
@@ -28,13 +28,13 @@ import {
|
|
|
28
28
|
PG_UPDATED_AT,
|
|
29
29
|
type PgRefOptions,
|
|
30
30
|
} from "../constants/PG_SYMBOLS.ts";
|
|
31
|
-
import type {
|
|
32
|
-
import type {
|
|
31
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
32
|
+
import type { SequencePrimitive } from "../primitives/$sequence.ts";
|
|
33
33
|
import { ModelBuilder } from "./ModelBuilder.ts";
|
|
34
34
|
|
|
35
35
|
export class SqliteModelBuilder extends ModelBuilder {
|
|
36
36
|
public buildTable(
|
|
37
|
-
entity:
|
|
37
|
+
entity: EntityPrimitive<any>,
|
|
38
38
|
options: {
|
|
39
39
|
tables: Map<string, unknown>;
|
|
40
40
|
enums: Map<string, unknown>;
|
|
@@ -62,7 +62,7 @@ export class SqliteModelBuilder extends ModelBuilder {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
public buildSequence(
|
|
65
|
-
sequence:
|
|
65
|
+
sequence: SequencePrimitive,
|
|
66
66
|
options: {
|
|
67
67
|
sequences: Map<string, unknown>;
|
|
68
68
|
schema: string;
|
|
@@ -75,7 +75,7 @@ export class SqliteModelBuilder extends ModelBuilder {
|
|
|
75
75
|
* Get SQLite-specific config builder for the table.
|
|
76
76
|
*/
|
|
77
77
|
protected getTableConfig(
|
|
78
|
-
entity:
|
|
78
|
+
entity: EntityPrimitive,
|
|
79
79
|
tables: Map<string, unknown>,
|
|
80
80
|
): ((self: BuildColumns<string, any, "sqlite">) => any) | undefined {
|
|
81
81
|
// SQLite-specific builders
|
package/src/queue/index.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { $module, type Alepha } from "alepha";
|
|
2
|
-
import { $consumer } from "./
|
|
3
|
-
import { $queue } from "./
|
|
2
|
+
import { $consumer } from "./primitives/$consumer.ts";
|
|
3
|
+
import { $queue } from "./primitives/$queue.ts";
|
|
4
4
|
import { MemoryQueueProvider } from "./providers/MemoryQueueProvider.ts";
|
|
5
5
|
import { QueueProvider } from "./providers/QueueProvider.ts";
|
|
6
6
|
import { WorkerProvider } from "./providers/WorkerProvider.ts";
|
|
7
7
|
|
|
8
8
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
9
9
|
|
|
10
|
-
export * from "./descriptors/$consumer.ts";
|
|
11
|
-
export * from "./descriptors/$queue.ts";
|
|
12
10
|
export * from "./interfaces/QueueJob.ts";
|
|
11
|
+
export * from "./primitives/$consumer.ts";
|
|
12
|
+
export * from "./primitives/$queue.ts";
|
|
13
13
|
export * from "./providers/MemoryQueueProvider.ts";
|
|
14
14
|
export * from "./providers/QueueProvider.ts";
|
|
15
15
|
export * from "./providers/WorkerProvider.ts";
|
|
@@ -17,9 +17,9 @@ export * from "./providers/WorkerProvider.ts";
|
|
|
17
17
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* Provides asynchronous message queuing and processing capabilities through declarative queue
|
|
20
|
+
* Provides asynchronous message queuing and processing capabilities through declarative queue primitives.
|
|
21
21
|
*
|
|
22
|
-
* The queue module enables reliable background job processing and message passing using the `$queue`
|
|
22
|
+
* The queue module enables reliable background job processing and message passing using the `$queue` primitive
|
|
23
23
|
* on class properties. It supports schema validation, automatic retries, and multiple queue backends for
|
|
24
24
|
* building scalable, decoupled applications with robust error handling.
|
|
25
25
|
*
|
|
@@ -29,7 +29,7 @@ export * from "./providers/WorkerProvider.ts";
|
|
|
29
29
|
*/
|
|
30
30
|
export const AlephaQueue = $module({
|
|
31
31
|
name: "alepha.queue",
|
|
32
|
-
|
|
32
|
+
primitives: [$queue, $consumer],
|
|
33
33
|
services: [QueueProvider, MemoryQueueProvider, WorkerProvider],
|
|
34
34
|
register: (alepha: Alepha) =>
|
|
35
35
|
alepha
|