@open-core/framework 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/adapters/contracts/IPlatformCapabilities.d.ts +79 -0
- package/dist/adapters/contracts/IPlatformCapabilities.js +31 -0
- package/dist/adapters/contracts/IPlayerInfo.d.ts +1 -1
- package/dist/adapters/contracts/{IPedAppearanceClient.d.ts → client/IPedAppearanceClient.d.ts} +1 -1
- package/dist/adapters/contracts/server/IEntityServer.d.ts +188 -0
- package/dist/adapters/contracts/server/IEntityServer.js +39 -0
- package/dist/adapters/contracts/{IPlayerServer.d.ts → server/IPlayerServer.d.ts} +52 -9
- package/dist/adapters/contracts/server/IPlayerServer.js +39 -0
- package/dist/adapters/contracts/types/identifier.d.ts +67 -0
- package/dist/adapters/contracts/types/identifier.js +64 -0
- package/dist/adapters/contracts/types/index.d.ts +1 -0
- package/dist/{kernel/shared/appearance → adapters/contracts/types}/index.js +1 -1
- package/dist/adapters/fivem/fivem-capabilities.d.ts +18 -0
- package/dist/adapters/fivem/fivem-capabilities.js +67 -0
- package/dist/adapters/fivem/fivem-engine-events.js +17 -4
- package/dist/adapters/fivem/fivem-entity-server.d.ts +6 -2
- package/dist/adapters/fivem/fivem-entity-server.js +14 -1
- package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +1 -1
- package/dist/adapters/fivem/fivem-ped-appearance-client.js +1 -1
- package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +1 -1
- package/dist/adapters/fivem/fivem-ped-appearance-server.js +1 -1
- package/dist/adapters/fivem/fivem-platform.d.ts +5 -0
- package/dist/adapters/fivem/fivem-platform.js +100 -0
- package/dist/adapters/fivem/fivem-player-server.d.ts +7 -1
- package/dist/adapters/fivem/fivem-player-server.js +19 -1
- package/dist/adapters/fivem/fivem-playerinfo.d.ts +1 -1
- package/dist/adapters/fivem/fivem-vehicle-server.d.ts +1 -1
- package/dist/adapters/fivem/fivem-vehicle-server.js +1 -1
- package/dist/adapters/fivem/index.d.ts +13 -0
- package/dist/adapters/fivem/index.js +31 -0
- package/dist/adapters/index.d.ts +8 -7
- package/dist/adapters/index.js +13 -12
- package/dist/adapters/node/index.d.ts +5 -0
- package/dist/adapters/node/index.js +13 -1
- package/dist/adapters/node/node-capabilities.d.ts +19 -0
- package/dist/adapters/node/node-capabilities.js +54 -0
- package/dist/adapters/node/node-entity-server.d.ts +17 -6
- package/dist/adapters/node/node-entity-server.js +41 -15
- package/dist/adapters/node/node-net-transport.js +2 -2
- package/dist/adapters/node/node-ped-appearance-client.d.ts +1 -1
- package/dist/adapters/node/node-ped-appearance-client.js +1 -1
- package/dist/adapters/node/node-ped-appearance-server.d.ts +1 -1
- package/dist/adapters/node/node-ped-appearance-server.js +1 -1
- package/dist/adapters/node/node-platform.d.ts +5 -0
- package/dist/adapters/node/node-platform.js +103 -0
- package/dist/adapters/node/node-player-server.d.ts +19 -3
- package/dist/adapters/node/node-player-server.js +43 -9
- package/dist/adapters/node/node-playerinfo.d.ts +2 -2
- package/dist/adapters/node/node-playerinfo.js +14 -3
- package/dist/adapters/node/node-vehicle-server.d.ts +1 -1
- package/dist/adapters/node/node-vehicle-server.js +1 -1
- package/dist/adapters/platform/index.d.ts +1 -0
- package/dist/{runtime/server/database.js → adapters/platform/index.js} +1 -7
- package/dist/adapters/platform/platform-registry.d.ts +101 -0
- package/dist/adapters/platform/platform-registry.js +122 -0
- package/dist/adapters/register-capabilities.d.ts +52 -2
- package/dist/adapters/register-capabilities.js +69 -130
- package/dist/adapters/register-client-capabilities.js +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +5 -31
- package/dist/kernel/di/container.d.ts +4 -2
- package/dist/kernel/di/container.js +5 -3
- package/dist/kernel/di/metadata.scanner.d.ts +2 -1
- package/dist/kernel/di/metadata.scanner.js +3 -2
- package/dist/kernel/{utils/error → error}/app.error.d.ts +2 -2
- package/dist/kernel/error/common.error-codes.d.ts +1 -0
- package/dist/kernel/error/framework.error-codes.d.ts +12 -0
- package/dist/kernel/error/index.d.ts +4 -0
- package/dist/kernel/error/index.js +18 -0
- package/dist/kernel/{utils/error → error}/security.error.d.ts +1 -1
- package/dist/kernel/error/security.types.js +2 -0
- package/dist/kernel/index.d.ts +4 -5
- package/dist/kernel/index.js +6 -11
- package/dist/kernel/{shared/logger → logger}/core-logger.d.ts +0 -19
- package/dist/kernel/{shared/logger → logger}/core-logger.js +10 -24
- package/dist/kernel/{shared/logger → logger}/logger.env.d.ts +12 -5
- package/dist/kernel/{shared/logger → logger}/logger.env.js +29 -13
- package/dist/kernel/{shared/logger → logger}/logger.service.d.ts +14 -0
- package/dist/kernel/{shared/logger → logger}/logger.service.js +20 -2
- package/dist/kernel/logger/transports/transport.interface.js +2 -0
- package/dist/kernel/shared/index.d.ts +1 -2
- package/dist/kernel/shared/index.js +1 -2
- package/dist/kernel/utils/index.d.ts +0 -2
- package/dist/kernel/utils/index.js +0 -2
- package/dist/kernel/utils/result.d.ts +1 -1
- package/dist/runtime/client/api.d.ts +7 -0
- package/dist/runtime/client/api.js +23 -0
- package/dist/runtime/client/client-bootstrap.js +1 -1
- package/dist/runtime/client/controllers/spawner.controller.d.ts +1 -1
- package/dist/runtime/client/decorators/index.d.ts +2 -2
- package/dist/runtime/client/decorators/index.js +2 -2
- package/dist/runtime/client/decorators/key.d.ts +2 -2
- package/dist/runtime/client/decorators/key.js +3 -3
- package/dist/runtime/client/decorators/localEvent.d.ts +1 -1
- package/dist/runtime/client/decorators/localEvent.js +1 -1
- package/dist/runtime/client/decorators/{tick.d.ts → onTick.d.ts} +1 -1
- package/dist/runtime/client/decorators/{tick.js → onTick.js} +2 -2
- package/dist/runtime/client/decorators/{nui.d.ts → onView.d.ts} +4 -4
- package/dist/runtime/client/decorators/{nui.js → onView.js} +5 -5
- package/dist/runtime/client/index.d.ts +1 -7
- package/dist/runtime/client/index.js +26 -12
- package/dist/runtime/client/player/player.d.ts +1 -1
- package/dist/runtime/client/player/player.loader.js +3 -3
- package/dist/runtime/client/services/appearance.service.d.ts +1 -1
- package/dist/runtime/client/services/appearance.service.js +1 -1
- package/dist/runtime/client/services/blip.service.d.ts +1 -1
- package/dist/runtime/client/services/marker.service.d.ts +1 -1
- package/dist/runtime/client/services/ped.service.d.ts +1 -1
- package/dist/runtime/client/services/spawn.service.d.ts +2 -2
- package/dist/runtime/client/services/spawn.service.js +12 -12
- package/dist/runtime/client/services/textui.service.d.ts +1 -1
- package/dist/runtime/client/services/vehicle-client.service.d.ts +1 -1
- package/dist/runtime/client/services/vehicle.service.d.ts +1 -1
- package/dist/runtime/client/system/processors/export.processor.js +1 -1
- package/dist/runtime/client/system/processors/gameEvent.processor.js +1 -1
- package/dist/runtime/client/system/processors/interval.processor.js +1 -1
- package/dist/runtime/client/system/processors/localEvent.processor.js +1 -1
- package/dist/runtime/client/system/processors/netEvent.processor.js +1 -1
- package/dist/runtime/client/system/processors/nui.processor.js +5 -4
- package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +1 -1
- package/dist/runtime/client/system/processors/tick.processor.js +1 -1
- package/dist/runtime/client/ui-bridge.js +1 -1
- package/dist/runtime/core/entity.d.ts +168 -0
- package/dist/runtime/core/entity.js +226 -0
- package/dist/runtime/core/index.d.ts +3 -0
- package/dist/runtime/core/index.js +19 -0
- package/dist/runtime/core/spatial.d.ts +5 -0
- package/dist/runtime/core/spatial.js +2 -0
- package/dist/runtime/core/world.d.ts +13 -0
- package/dist/runtime/core/world.js +64 -0
- package/dist/runtime/server/api.d.ts +12 -0
- package/dist/runtime/server/api.js +34 -0
- package/dist/runtime/server/bootstrap.js +58 -103
- package/dist/runtime/server/bus/internal-event.bus.js +1 -1
- package/dist/runtime/server/contracts/index.d.ts +1 -2
- package/dist/runtime/server/contracts/index.js +2 -3
- package/dist/runtime/server/contracts/player-persistence.contract.d.ts +16 -18
- package/dist/runtime/server/contracts/player-persistence.contract.js +16 -18
- package/dist/runtime/server/contracts/security/command-error-observer.contract.d.ts +73 -0
- package/dist/runtime/server/contracts/security/command-error-observer.contract.js +9 -0
- package/dist/runtime/server/contracts/security/permission.types.d.ts +2 -2
- package/dist/runtime/server/contracts/security/principal-provider.contract.d.ts +3 -3
- package/dist/runtime/server/contracts/security/principal-provider.contract.js +2 -2
- package/dist/runtime/server/contracts/security/security-handler.contract.d.ts +2 -2
- package/dist/runtime/server/controllers/chat.controller.d.ts +1 -1
- package/dist/runtime/server/controllers/chat.controller.js +5 -0
- package/dist/runtime/server/controllers/command-export.controller.d.ts +12 -3
- package/dist/runtime/server/controllers/command-export.controller.js +81 -25
- package/dist/runtime/server/controllers/player-export.controller.d.ts +2 -2
- package/dist/runtime/server/controllers/player-export.controller.js +5 -0
- package/dist/runtime/server/controllers/principal-export.controller.js +8 -7
- package/dist/runtime/server/controllers/ready.controller.d.ts +5 -0
- package/dist/runtime/server/controllers/ready.controller.js +37 -0
- package/dist/runtime/server/controllers/remote-command-execution.controller.d.ts +10 -1
- package/dist/runtime/server/controllers/remote-command-execution.controller.js +65 -13
- package/dist/runtime/server/controllers/session.controller.d.ts +2 -2
- package/dist/runtime/server/controllers/session.controller.js +25 -17
- package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -38
- package/dist/runtime/server/controllers/vehicle.controller.js +6 -152
- package/dist/runtime/server/decorators/guard.d.ts +8 -6
- package/dist/runtime/server/decorators/guard.js +10 -8
- package/dist/runtime/server/decorators/index.d.ts +1 -1
- package/dist/runtime/server/decorators/index.js +1 -1
- package/dist/runtime/server/decorators/onNet.d.ts +3 -3
- package/dist/runtime/server/decorators/{onFiveMEvent.d.ts → onRuntimeEvent.d.ts} +5 -4
- package/dist/runtime/server/decorators/{onFiveMEvent.js → onRuntimeEvent.js} +7 -6
- package/dist/runtime/server/decorators/requiresState.js +3 -3
- package/dist/runtime/server/decorators/throttle.d.ts +1 -1
- package/dist/runtime/server/decorators/throttle.js +1 -1
- package/dist/runtime/server/decorators/utils.d.ts +1 -1
- package/dist/runtime/server/decorators/utils.js +1 -1
- package/dist/runtime/server/devmode/dev-mode.service.d.ts +7 -8
- package/dist/runtime/server/devmode/dev-mode.service.js +18 -46
- package/dist/runtime/server/devmode/index.d.ts +1 -3
- package/dist/runtime/server/devmode/index.js +1 -18
- package/dist/runtime/server/devmode/player-simulator.service.js +3 -3
- package/dist/runtime/server/devmode/state-inspector.service.js +2 -2
- package/dist/runtime/server/devmode/types.d.ts +67 -31
- package/dist/runtime/server/devmode/types.js +1 -4
- package/dist/runtime/server/entities/player.d.ts +80 -66
- package/dist/runtime/server/entities/player.js +137 -98
- package/dist/runtime/server/entities/vehicle.d.ts +3 -3
- package/dist/runtime/server/error-handler.js +5 -5
- package/dist/runtime/server/helpers/normalize-app-error.d.ts +9 -0
- package/dist/runtime/server/helpers/normalize-app-error.js +20 -0
- package/dist/runtime/server/helpers/resolve-method.js +3 -3
- package/dist/runtime/server/index.d.ts +1 -13
- package/dist/runtime/server/index.js +25 -23
- package/dist/runtime/server/runtime.d.ts +32 -281
- package/dist/runtime/server/runtime.js +46 -60
- package/dist/runtime/server/services/appearance.service.d.ts +5 -5
- package/dist/runtime/server/services/appearance.service.js +5 -5
- package/dist/runtime/server/services/chat.service.d.ts +5 -3
- package/dist/runtime/server/services/chat.service.js +17 -12
- package/dist/runtime/server/services/core/command.service.d.ts +9 -1
- package/dist/runtime/server/services/core/command.service.js +16 -7
- package/dist/runtime/server/services/core/player.service.d.ts +12 -16
- package/dist/runtime/server/services/core/player.service.js +42 -47
- package/dist/runtime/server/services/core/principal.service.js +5 -5
- package/dist/runtime/server/services/core/session-recovery.service.d.ts +1 -1
- package/dist/runtime/server/services/core/session-recovery.service.js +2 -2
- package/dist/runtime/server/services/default/default-command-error-observer.d.ts +14 -0
- package/dist/runtime/server/services/default/default-command-error-observer.js +43 -0
- package/dist/runtime/server/services/default/default-principal.provider.d.ts +13 -0
- package/dist/runtime/server/services/default/default-principal.provider.js +38 -0
- package/dist/runtime/server/services/default/default-security.handler.d.ts +1 -1
- package/dist/runtime/server/services/default/default-security.handler.js +1 -1
- package/dist/runtime/server/services/index.d.ts +0 -3
- package/dist/runtime/server/services/index.js +1 -6
- package/dist/runtime/server/services/parallel/index.d.ts +1 -45
- package/dist/runtime/server/services/parallel/index.js +0 -44
- package/dist/runtime/server/services/parallel/native-worker.entry.d.ts +1 -0
- package/dist/runtime/server/services/parallel/native-worker.entry.js +12 -0
- package/dist/runtime/server/services/parallel/parallel-compute.service.d.ts +17 -17
- package/dist/runtime/server/services/parallel/parallel-compute.service.js +10 -3
- package/dist/runtime/server/services/parallel/types.d.ts +5 -2
- package/dist/runtime/server/services/parallel/worker-pool.d.ts +5 -9
- package/dist/runtime/server/services/parallel/worker-pool.js +167 -57
- package/dist/runtime/server/services/parallel/worker.d.ts +8 -5
- package/dist/runtime/server/services/parallel/worker.js +8 -5
- package/dist/runtime/server/services/persistence.service.js +3 -3
- package/dist/runtime/server/services/ports/command-execution.port.d.ts +7 -0
- package/dist/runtime/server/services/ports/principal.port.d.ts +1 -1
- package/dist/runtime/server/services/remote/remote-command.service.d.ts +1 -0
- package/dist/runtime/server/services/remote/remote-command.service.js +7 -3
- package/dist/runtime/server/services/remote/remote-player.service.d.ts +2 -2
- package/dist/runtime/server/services/remote/remote-player.service.js +3 -3
- package/dist/runtime/server/services/remote/server-bridge.js +2 -2
- package/dist/runtime/server/services/services.register.d.ts +2 -5
- package/dist/runtime/server/services/services.register.js +29 -41
- package/dist/runtime/server/services/vehicle-modification.service.js +1 -1
- package/dist/runtime/server/services/vehicle.service.d.ts +3 -3
- package/dist/runtime/server/services/vehicle.service.js +5 -5
- package/dist/runtime/server/setup.d.ts +2 -3
- package/dist/runtime/server/setup.js +10 -11
- package/dist/runtime/server/system/metadata-server.keys.d.ts +1 -1
- package/dist/runtime/server/system/metadata-server.keys.js +1 -1
- package/dist/runtime/server/system/processors/command.processor.js +4 -0
- package/dist/runtime/server/system/processors/export.processor.js +1 -1
- package/dist/runtime/server/system/processors/internalEvent.processor.js +1 -1
- package/dist/runtime/server/system/processors/netEvent.processor.js +8 -9
- package/dist/runtime/server/system/processors/{fivemEvent.processor.d.ts → runtimeEvent.processor.d.ts} +1 -1
- package/dist/runtime/server/system/processors/{fivemEvent.processor.js → runtimeEvent.processor.js} +8 -8
- package/dist/runtime/server/system/processors/tick.processor.js +1 -1
- package/dist/runtime/server/system/processors.register.js +16 -11
- package/dist/runtime/server/system/schema-generator.js +2 -2
- package/dist/runtime/server/types/core-exports.d.ts +6 -6
- package/dist/runtime/server/types/index.d.ts +1 -1
- package/dist/runtime/server/types/index.js +1 -1
- package/dist/runtime/server/types/internal-events.d.ts +1 -1
- package/dist/runtime/server/types/vehicle.types.d.ts +1 -1
- package/package.json +8 -16
- package/dist/adapters/contracts/IEntityServer.d.ts +0 -88
- package/dist/adapters/contracts/IEntityServer.js +0 -13
- package/dist/adapters/contracts/IPlayerServer.js +0 -13
- package/dist/adapters/database/oxmysql.adapter.d.ts +0 -89
- package/dist/adapters/database/oxmysql.adapter.js +0 -149
- package/dist/adapters/database/resource.adapter.d.ts +0 -12
- package/dist/adapters/database/resource.adapter.js +0 -68
- package/dist/kernel/shared/appearance/index.d.ts +0 -1
- package/dist/runtime/index.d.ts +0 -2
- package/dist/runtime/index.js +0 -39
- package/dist/runtime/server/bootstrap.validation.d.ts +0 -12
- package/dist/runtime/server/bootstrap.validation.js +0 -104
- package/dist/runtime/server/contracts/auth-provider.contract.d.ts +0 -58
- package/dist/runtime/server/contracts/auth-provider.contract.js +0 -23
- package/dist/runtime/server/contracts/repository/index.d.ts +0 -57
- package/dist/runtime/server/contracts/repository/index.js +0 -61
- package/dist/runtime/server/contracts/repository/repository.contract.d.ts +0 -224
- package/dist/runtime/server/contracts/repository/repository.contract.js +0 -341
- package/dist/runtime/server/contracts/repository/repository.types.d.ts +0 -51
- package/dist/runtime/server/contracts/repository/repository.types.js +0 -7
- package/dist/runtime/server/database/adapter.registry.d.ts +0 -4
- package/dist/runtime/server/database/adapter.registry.js +0 -14
- package/dist/runtime/server/database/database.contract.d.ts +0 -128
- package/dist/runtime/server/database/database.contract.js +0 -29
- package/dist/runtime/server/database/database.service.d.ts +0 -188
- package/dist/runtime/server/database/database.service.js +0 -287
- package/dist/runtime/server/database/index.d.ts +0 -5
- package/dist/runtime/server/database/index.js +0 -25
- package/dist/runtime/server/database/types.d.ts +0 -67
- package/dist/runtime/server/database/types.js +0 -7
- package/dist/runtime/server/database.d.ts +0 -7
- package/dist/runtime/server/devmode/hot-reload.server.d.ts +0 -74
- package/dist/runtime/server/devmode/hot-reload.server.js +0 -261
- package/dist/runtime/server/services/config.service.d.ts +0 -75
- package/dist/runtime/server/services/config.service.js +0 -116
- package/dist/runtime/server/services/http/http.service.d.ts +0 -50
- package/dist/runtime/server/services/http/http.service.js +0 -126
- /package/dist/adapters/contracts/{IPedAppearanceClient.js → client/IPedAppearanceClient.js} +0 -0
- /package/dist/adapters/contracts/{IPedAppearanceServer.d.ts → server/IPedAppearanceServer.d.ts} +0 -0
- /package/dist/adapters/contracts/{IPedAppearanceServer.js → server/IPedAppearanceServer.js} +0 -0
- /package/dist/adapters/contracts/{IVehicleServer.d.ts → server/IVehicleServer.d.ts} +0 -0
- /package/dist/adapters/contracts/{IVehicleServer.js → server/IVehicleServer.js} +0 -0
- /package/dist/kernel/{utils/error → error}/app.error.js +0 -0
- /package/dist/kernel/{shared/logger/transports/transport.interface.js → error/common.error-codes.js} +0 -0
- /package/dist/{runtime/server/types/security.types.js → kernel/error/framework.error-codes.js} +0 -0
- /package/dist/kernel/{utils/error → error}/security.error.js +0 -0
- /package/dist/{runtime/server/types → kernel/error}/security.types.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/index.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/index.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.config.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.config.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.types.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.types.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/console.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/console.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/http.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/http.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/index.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/index.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/transport.interface.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.js +0 -0
- /package/dist/kernel/shared/{appearance/appearance.interface.d.ts → player-appearance.types.d.ts} +0 -0
- /package/dist/kernel/shared/{appearance/appearance.interface.js → player-appearance.types.js} +0 -0
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Repository Contract
|
|
4
|
-
*
|
|
5
|
-
* Abstract base class for implementing the Repository Pattern.
|
|
6
|
-
* Provides common CRUD operations with support for pagination, ordering, and field selection.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* interface User {
|
|
11
|
-
* id: number
|
|
12
|
-
* name: string
|
|
13
|
-
* email: string
|
|
14
|
-
* createdAt: Date
|
|
15
|
-
* }
|
|
16
|
-
*
|
|
17
|
-
* class UserRepository extends Repository<User> {
|
|
18
|
-
* protected tableName = 'users'
|
|
19
|
-
*
|
|
20
|
-
* constructor(db: DatabaseContract) {
|
|
21
|
-
* super(db)
|
|
22
|
-
* }
|
|
23
|
-
*
|
|
24
|
-
* protected toEntity(row: any): User {
|
|
25
|
-
* return {
|
|
26
|
-
* id: row.id,
|
|
27
|
-
* name: row.name,
|
|
28
|
-
* email: row.email,
|
|
29
|
-
* createdAt: new Date(row.created_at)
|
|
30
|
-
* }
|
|
31
|
-
* }
|
|
32
|
-
*
|
|
33
|
-
* protected toRow(entity: User): Record<string, any> {
|
|
34
|
-
* return {
|
|
35
|
-
* id: entity.id,
|
|
36
|
-
* name: entity.name,
|
|
37
|
-
* email: entity.email,
|
|
38
|
-
* created_at: entity.createdAt.toISOString()
|
|
39
|
-
* }
|
|
40
|
-
* }
|
|
41
|
-
* }
|
|
42
|
-
*
|
|
43
|
-
* // Usage
|
|
44
|
-
* const userRepo = new UserRepository(db)
|
|
45
|
-
* const user = await userRepo.findById(1)
|
|
46
|
-
* const users = await userRepo.findMany({ active: true }, { limit: 10, orderBy: { createdAt: 'DESC' } })
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
50
|
-
var t = {};
|
|
51
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
52
|
-
t[p] = s[p];
|
|
53
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
54
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
55
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
56
|
-
t[p[i]] = s[p[i]];
|
|
57
|
-
}
|
|
58
|
-
return t;
|
|
59
|
-
};
|
|
60
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
-
exports.Repository = void 0;
|
|
62
|
-
/**
|
|
63
|
-
* Abstract Repository base class
|
|
64
|
-
*
|
|
65
|
-
* Extend this class to create type-safe repositories for your entities.
|
|
66
|
-
*
|
|
67
|
-
* @typeParam TEntity - The entity type this repository manages
|
|
68
|
-
* @typeParam TId - The type of the primary key (defaults to number)
|
|
69
|
-
*/
|
|
70
|
-
class Repository {
|
|
71
|
-
/**
|
|
72
|
-
* Creates a new repository instance
|
|
73
|
-
*
|
|
74
|
-
* @param db - The database contract/service to use for queries
|
|
75
|
-
*/
|
|
76
|
-
constructor(db) {
|
|
77
|
-
this.db = db;
|
|
78
|
-
/**
|
|
79
|
-
* The primary key column name (defaults to 'id')
|
|
80
|
-
*/
|
|
81
|
-
this.primaryKey = 'id';
|
|
82
|
-
}
|
|
83
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
84
|
-
// CRUD Operations
|
|
85
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
86
|
-
/**
|
|
87
|
-
* Find an entity by its primary key
|
|
88
|
-
*
|
|
89
|
-
* @param id - The primary key value
|
|
90
|
-
* @returns The entity or null if not found
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```typescript
|
|
94
|
-
* const user = await userRepo.findById(1)
|
|
95
|
-
* if (user) {
|
|
96
|
-
* console.log(user.name)
|
|
97
|
-
* }
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
async findById(id) {
|
|
101
|
-
const sql = `SELECT * FROM ${this.tableName} WHERE ${this.primaryKey} = ?`;
|
|
102
|
-
const row = await this.db.single(sql, [id]);
|
|
103
|
-
return row ? this.toEntity(row) : null;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Find a single entity matching the given conditions
|
|
107
|
-
*
|
|
108
|
-
* @param where - Conditions to match (equality only)
|
|
109
|
-
* @returns The first matching entity or null
|
|
110
|
-
*
|
|
111
|
-
* @example
|
|
112
|
-
* ```typescript
|
|
113
|
-
* const user = await userRepo.findOne({ email: 'john@example.com' })
|
|
114
|
-
* ```
|
|
115
|
-
*/
|
|
116
|
-
async findOne(where) {
|
|
117
|
-
const { clause, params } = this.buildWhereClause(where);
|
|
118
|
-
const sql = `SELECT * FROM ${this.tableName}${clause} LIMIT 1`;
|
|
119
|
-
const row = await this.db.single(sql, params);
|
|
120
|
-
return row ? this.toEntity(row) : null;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Find multiple entities with optional filtering, pagination, and ordering
|
|
124
|
-
*
|
|
125
|
-
* @param where - Optional conditions to filter by
|
|
126
|
-
* @param options - Query options (select, orderBy, limit, offset)
|
|
127
|
-
* @returns Result containing data array and optional total count
|
|
128
|
-
*
|
|
129
|
-
* @example
|
|
130
|
-
* ```typescript
|
|
131
|
-
* // Simple query
|
|
132
|
-
* const { data: users } = await userRepo.findMany({ active: true })
|
|
133
|
-
*
|
|
134
|
-
* // With pagination and ordering
|
|
135
|
-
* const result = await userRepo.findMany(
|
|
136
|
-
* { role: 'admin' },
|
|
137
|
-
* { limit: 10, offset: 20, orderBy: { createdAt: 'DESC' } }
|
|
138
|
-
* )
|
|
139
|
-
* console.log(`Page of ${result.data.length} admins`)
|
|
140
|
-
* ```
|
|
141
|
-
*/
|
|
142
|
-
async findMany(where, options) {
|
|
143
|
-
const selectClause = this.buildSelectClause(options === null || options === void 0 ? void 0 : options.select);
|
|
144
|
-
const { clause: whereClause, params } = this.buildWhereClause(where);
|
|
145
|
-
const orderClause = this.buildOrderClause(options === null || options === void 0 ? void 0 : options.orderBy);
|
|
146
|
-
const limitClause = this.buildLimitClause(options === null || options === void 0 ? void 0 : options.limit, options === null || options === void 0 ? void 0 : options.offset);
|
|
147
|
-
const sql = `SELECT ${selectClause} FROM ${this.tableName}${whereClause}${orderClause}${limitClause}`;
|
|
148
|
-
const rows = await this.db.query(sql, params);
|
|
149
|
-
const data = rows.map((row) => this.toEntity(row));
|
|
150
|
-
// If pagination is used, also get total count
|
|
151
|
-
let total;
|
|
152
|
-
if ((options === null || options === void 0 ? void 0 : options.limit) !== undefined) {
|
|
153
|
-
total = await this.count(where);
|
|
154
|
-
}
|
|
155
|
-
return { data, total };
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Count entities matching the given conditions
|
|
159
|
-
*
|
|
160
|
-
* @param where - Optional conditions to filter by
|
|
161
|
-
* @returns The count of matching entities
|
|
162
|
-
*
|
|
163
|
-
* @example
|
|
164
|
-
* ```typescript
|
|
165
|
-
* const activeCount = await userRepo.count({ active: true })
|
|
166
|
-
* ```
|
|
167
|
-
*/
|
|
168
|
-
async count(where) {
|
|
169
|
-
const { clause, params } = this.buildWhereClause(where);
|
|
170
|
-
const sql = `SELECT COUNT(*) as count FROM ${this.tableName}${clause}`;
|
|
171
|
-
const result = await this.db.scalar(sql, params);
|
|
172
|
-
return result !== null && result !== void 0 ? result : 0;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Save an entity (insert if new, update if exists)
|
|
176
|
-
*
|
|
177
|
-
* If the entity has a primary key value, it will be updated.
|
|
178
|
-
* Otherwise, a new record will be inserted.
|
|
179
|
-
*
|
|
180
|
-
* @param entity - The entity to save
|
|
181
|
-
* @returns The saved entity with updated ID (for inserts)
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* ```typescript
|
|
185
|
-
* // Insert new user
|
|
186
|
-
* const newUser = await userRepo.save({ name: 'John', email: 'john@example.com' })
|
|
187
|
-
* console.log(newUser.id) // Generated ID
|
|
188
|
-
*
|
|
189
|
-
* // Update existing user
|
|
190
|
-
* user.name = 'John Doe'
|
|
191
|
-
* await userRepo.save(user)
|
|
192
|
-
* ```
|
|
193
|
-
*/
|
|
194
|
-
async save(entity) {
|
|
195
|
-
const row = this.toRow(entity);
|
|
196
|
-
const id = row[this.primaryKey];
|
|
197
|
-
if (id !== undefined && id !== null) {
|
|
198
|
-
// Update existing entity
|
|
199
|
-
await this.update(id, row);
|
|
200
|
-
return entity;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
// Insert new entity
|
|
204
|
-
const insertedId = await this.insertRow(row);
|
|
205
|
-
// Return entity with the new ID
|
|
206
|
-
return this.toEntity(Object.assign(Object.assign({}, row), { [this.primaryKey]: insertedId }));
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Delete an entity by its primary key
|
|
211
|
-
*
|
|
212
|
-
* @param id - The primary key of the entity to delete
|
|
213
|
-
* @returns true if deleted, false if not found
|
|
214
|
-
*
|
|
215
|
-
* @example
|
|
216
|
-
* ```typescript
|
|
217
|
-
* const deleted = await userRepo.delete(1)
|
|
218
|
-
* if (deleted) {
|
|
219
|
-
* console.log('User deleted')
|
|
220
|
-
* }
|
|
221
|
-
* ```
|
|
222
|
-
*/
|
|
223
|
-
async delete(id) {
|
|
224
|
-
const sql = `DELETE FROM ${this.tableName} WHERE ${this.primaryKey} = ?`;
|
|
225
|
-
const result = await this.db.execute(sql, [id]);
|
|
226
|
-
return result.affectedRows > 0;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Delete entities matching the given conditions
|
|
230
|
-
*
|
|
231
|
-
* @param where - Conditions to match for deletion
|
|
232
|
-
* @returns Number of deleted entities
|
|
233
|
-
*
|
|
234
|
-
* @example
|
|
235
|
-
* ```typescript
|
|
236
|
-
* const count = await userRepo.deleteWhere({ active: false })
|
|
237
|
-
* console.log(`Deleted ${count} inactive users`)
|
|
238
|
-
* ```
|
|
239
|
-
*/
|
|
240
|
-
async deleteWhere(where) {
|
|
241
|
-
const { clause, params } = this.buildWhereClause(where);
|
|
242
|
-
if (!clause) {
|
|
243
|
-
throw new Error('deleteWhere requires at least one condition to prevent accidental full table deletion');
|
|
244
|
-
}
|
|
245
|
-
const sql = `DELETE FROM ${this.tableName}${clause}`;
|
|
246
|
-
const result = await this.db.execute(sql, params);
|
|
247
|
-
return result.affectedRows;
|
|
248
|
-
}
|
|
249
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
250
|
-
// Protected Helper Methods
|
|
251
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
252
|
-
/**
|
|
253
|
-
* Update an entity by ID
|
|
254
|
-
*/
|
|
255
|
-
async update(id, row) {
|
|
256
|
-
const _a = row, _b = this.primaryKey, _ = _a[_b], updateData = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
257
|
-
const columns = Object.keys(updateData);
|
|
258
|
-
const setClause = columns.map((col) => `${col} = ?`).join(', ');
|
|
259
|
-
const values = columns.map((col) => updateData[col]);
|
|
260
|
-
const sql = `UPDATE ${this.tableName} SET ${setClause} WHERE ${this.primaryKey} = ?`;
|
|
261
|
-
await this.db.execute(sql, [...values, id]);
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Insert a new row and return the inserted ID
|
|
265
|
-
*/
|
|
266
|
-
async insertRow(row) {
|
|
267
|
-
const _a = row, _b = this.primaryKey, _ = _a[_b], insertData = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
268
|
-
const columns = Object.keys(insertData);
|
|
269
|
-
const placeholders = columns.map(() => '?').join(', ');
|
|
270
|
-
const values = columns.map((col) => insertData[col]);
|
|
271
|
-
const sql = `INSERT INTO ${this.tableName} (${columns.join(', ')}) VALUES (${placeholders})`;
|
|
272
|
-
const result = await this.db.insert(sql, values);
|
|
273
|
-
return result.insertId;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Build SELECT clause from field selection
|
|
277
|
-
*/
|
|
278
|
-
buildSelectClause(select) {
|
|
279
|
-
if (!select || select.length === 0) {
|
|
280
|
-
return '*';
|
|
281
|
-
}
|
|
282
|
-
return select.map((field) => String(field)).join(', ');
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Build WHERE clause from conditions
|
|
286
|
-
*/
|
|
287
|
-
buildWhereClause(where) {
|
|
288
|
-
if (!where || Object.keys(where).length === 0) {
|
|
289
|
-
return { clause: '', params: [] };
|
|
290
|
-
}
|
|
291
|
-
const conditions = [];
|
|
292
|
-
const params = [];
|
|
293
|
-
for (const [key, value] of Object.entries(where)) {
|
|
294
|
-
if (value === null) {
|
|
295
|
-
conditions.push(`${key} IS NULL`);
|
|
296
|
-
}
|
|
297
|
-
else if (value === undefined) {
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
conditions.push(`${key} = ?`);
|
|
301
|
-
params.push(value);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
if (conditions.length === 0) {
|
|
305
|
-
return { clause: '', params: [] };
|
|
306
|
-
}
|
|
307
|
-
return {
|
|
308
|
-
clause: ` WHERE ${conditions.join(' AND ')}`,
|
|
309
|
-
params,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Build ORDER BY clause from orderBy options
|
|
314
|
-
*/
|
|
315
|
-
buildOrderClause(orderBy) {
|
|
316
|
-
if (!orderBy || Object.keys(orderBy).length === 0) {
|
|
317
|
-
return '';
|
|
318
|
-
}
|
|
319
|
-
const orders = Object.entries(orderBy)
|
|
320
|
-
.filter(([_, direction]) => direction)
|
|
321
|
-
.map(([field, direction]) => `${field} ${direction}`);
|
|
322
|
-
if (orders.length === 0) {
|
|
323
|
-
return '';
|
|
324
|
-
}
|
|
325
|
-
return ` ORDER BY ${orders.join(', ')}`;
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Build LIMIT/OFFSET clause
|
|
329
|
-
*/
|
|
330
|
-
buildLimitClause(limit, offset) {
|
|
331
|
-
if (limit === undefined) {
|
|
332
|
-
return '';
|
|
333
|
-
}
|
|
334
|
-
let clause = ` LIMIT ${limit}`;
|
|
335
|
-
if (offset !== undefined && offset > 0) {
|
|
336
|
-
clause += ` OFFSET ${offset}`;
|
|
337
|
-
}
|
|
338
|
-
return clause;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
exports.Repository = Repository;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Repository Pattern Types
|
|
3
|
-
*
|
|
4
|
-
* Types and interfaces for the generic repository pattern.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Sort direction for orderBy clauses
|
|
8
|
-
*/
|
|
9
|
-
export type OrderDirection = 'ASC' | 'DESC';
|
|
10
|
-
/**
|
|
11
|
-
* Options for findMany queries with pagination, ordering, and field selection
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const options: FindOptions<User> = {
|
|
16
|
-
* select: ['id', 'name', 'email'],
|
|
17
|
-
* orderBy: { createdAt: 'DESC' },
|
|
18
|
-
* limit: 10,
|
|
19
|
-
* offset: 0
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export interface FindOptions<TEntity> {
|
|
24
|
-
/** Fields to select (SELECT clause). If omitted, selects all fields (*) */
|
|
25
|
-
select?: (keyof TEntity)[];
|
|
26
|
-
/** Order by fields with direction */
|
|
27
|
-
orderBy?: Partial<Record<keyof TEntity, OrderDirection>>;
|
|
28
|
-
/** Maximum number of records to return */
|
|
29
|
-
limit?: number;
|
|
30
|
-
/** Number of records to skip (for pagination) */
|
|
31
|
-
offset?: number;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Result of a findMany query with optional total count for pagination
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* const result = await userRepo.findMany({}, { limit: 10 })
|
|
39
|
-
* console.log(`Showing ${result.data.length} of ${result.total} users`)
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export interface FindManyResult<TEntity> {
|
|
43
|
-
/** Array of entities matching the query */
|
|
44
|
-
data: TEntity[];
|
|
45
|
-
/** Total count of matching records (useful for pagination) */
|
|
46
|
-
total?: number;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Where clause condition - partial entity for simple equality matching
|
|
50
|
-
*/
|
|
51
|
-
export type WhereCondition<TEntity> = Partial<TEntity>;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { DatabaseContract } from './database.contract';
|
|
2
|
-
export type DatabaseAdapterFactoryFn = () => DatabaseContract;
|
|
3
|
-
export declare function registerDatabaseAdapterFactory(name: string, factory: DatabaseAdapterFactoryFn): void;
|
|
4
|
-
export declare function resolveDatabaseAdapterFactory(name: string): DatabaseAdapterFactoryFn | undefined;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerDatabaseAdapterFactory = registerDatabaseAdapterFactory;
|
|
4
|
-
exports.resolveDatabaseAdapterFactory = resolveDatabaseAdapterFactory;
|
|
5
|
-
const factories = new Map();
|
|
6
|
-
function registerDatabaseAdapterFactory(name, factory) {
|
|
7
|
-
if (factories.has(name)) {
|
|
8
|
-
throw new Error(`[OpenCore] Database adapter factory '${name}' is already registered`);
|
|
9
|
-
}
|
|
10
|
-
factories.set(name, factory);
|
|
11
|
-
}
|
|
12
|
-
function resolveDatabaseAdapterFactory(name) {
|
|
13
|
-
return factories.get(name);
|
|
14
|
-
}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Database Contract
|
|
3
|
-
*
|
|
4
|
-
* Abstract base class that defines the interface for all database adapters.
|
|
5
|
-
* Implement this contract to create custom database adapters.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* class MyDatabaseAdapter extends DatabaseContract {
|
|
10
|
-
* async query<T>(sql: string, params?: any[]): Promise<T[]> {
|
|
11
|
-
* // Implementation
|
|
12
|
-
* }
|
|
13
|
-
* // ... other methods
|
|
14
|
-
* }
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
import { ExecuteResult, InsertResult, TransactionInput, TransactionSharedParams } from './types';
|
|
18
|
-
/**
|
|
19
|
-
* Abstract contract for database adapters.
|
|
20
|
-
*
|
|
21
|
-
* All database adapters must extend this class and implement
|
|
22
|
-
* all abstract methods to ensure consistent behavior across
|
|
23
|
-
* different database backends.
|
|
24
|
-
*/
|
|
25
|
-
export declare abstract class DatabaseContract {
|
|
26
|
-
/**
|
|
27
|
-
* Execute a query and return all matching rows.
|
|
28
|
-
*
|
|
29
|
-
* @param sql - The SQL query string
|
|
30
|
-
* @param params - Optional parameters for prepared statement
|
|
31
|
-
* @returns Array of results
|
|
32
|
-
*
|
|
33
|
-
* @example
|
|
34
|
-
* ```typescript
|
|
35
|
-
* const users = await db.query<User>('SELECT * FROM users WHERE active = ?', [true])
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
abstract query<T = any>(sql: string, params?: any[]): Promise<T[]>;
|
|
39
|
-
/**
|
|
40
|
-
* Execute a query and return a single row.
|
|
41
|
-
*
|
|
42
|
-
* @param sql - The SQL query string
|
|
43
|
-
* @param params - Optional parameters for prepared statement
|
|
44
|
-
* @returns Single result or null if not found
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const user = await db.single<User>('SELECT * FROM users WHERE id = ?', [userId])
|
|
49
|
-
* if (user) {
|
|
50
|
-
* console.log(user.name)
|
|
51
|
-
* }
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
abstract single<T = any>(sql: string, params?: any[]): Promise<T | null>;
|
|
55
|
-
/**
|
|
56
|
-
* Execute a query and return a single scalar value.
|
|
57
|
-
*
|
|
58
|
-
* @param sql - The SQL query string
|
|
59
|
-
* @param params - Optional parameters for prepared statement
|
|
60
|
-
* @returns Scalar value or null if not found
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```typescript
|
|
64
|
-
* const count = await db.scalar<number>('SELECT COUNT(*) FROM users')
|
|
65
|
-
* const name = await db.scalar<string>('SELECT name FROM users WHERE id = ?', [userId])
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
abstract scalar<T = any>(sql: string, params?: any[]): Promise<T | null>;
|
|
69
|
-
/**
|
|
70
|
-
* Execute an UPDATE or DELETE statement.
|
|
71
|
-
*
|
|
72
|
-
* @param sql - The SQL statement
|
|
73
|
-
* @param params - Optional parameters for prepared statement
|
|
74
|
-
* @returns Object containing affected rows count
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* ```typescript
|
|
78
|
-
* const result = await db.execute('UPDATE users SET active = ? WHERE id = ?', [false, userId])
|
|
79
|
-
* console.log(`Updated ${result.affectedRows} rows`)
|
|
80
|
-
* ```
|
|
81
|
-
*/
|
|
82
|
-
abstract execute(sql: string, params?: any[]): Promise<ExecuteResult>;
|
|
83
|
-
/**
|
|
84
|
-
* Execute an INSERT statement.
|
|
85
|
-
*
|
|
86
|
-
* @param sql - The SQL insert statement
|
|
87
|
-
* @param params - Optional parameters for prepared statement
|
|
88
|
-
* @returns Object containing the inserted row ID
|
|
89
|
-
*
|
|
90
|
-
* @example
|
|
91
|
-
* ```typescript
|
|
92
|
-
* const result = await db.insert('INSERT INTO users (name, email) VALUES (?, ?)', ['John', 'john@example.com'])
|
|
93
|
-
* console.log(`Inserted user with ID: ${result.insertId}`)
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
abstract insert(sql: string, params?: any[]): Promise<InsertResult>;
|
|
97
|
-
/**
|
|
98
|
-
* Execute multiple queries within a transaction.
|
|
99
|
-
*
|
|
100
|
-
* All queries are committed together if all succeed, or rolled back if any fails.
|
|
101
|
-
*
|
|
102
|
-
* **Specific format** - Each query has its own parameters:
|
|
103
|
-
* ```typescript
|
|
104
|
-
* await db.transaction([
|
|
105
|
-
* { query: 'INSERT INTO users (name) VALUES (?)', values: ['John'] },
|
|
106
|
-
* { query: 'INSERT INTO logs (action) VALUES (?)', values: ['user_created'] },
|
|
107
|
-
* ])
|
|
108
|
-
* ```
|
|
109
|
-
*
|
|
110
|
-
* **Shared format** - All queries share named parameters:
|
|
111
|
-
* ```typescript
|
|
112
|
-
* await db.transaction(
|
|
113
|
-
* [
|
|
114
|
-
* 'INSERT INTO users (id, name) VALUES (@userid, @username)',
|
|
115
|
-
* 'INSERT INTO profiles (user_id) VALUES (@userid)',
|
|
116
|
-
* ],
|
|
117
|
-
* { userid: 1, username: 'John' }
|
|
118
|
-
* )
|
|
119
|
-
* ```
|
|
120
|
-
*
|
|
121
|
-
* @param queries - Array of queries to execute
|
|
122
|
-
* @param sharedParams - Optional shared parameters for all queries (named params format)
|
|
123
|
-
* @returns true if transaction succeeded, false otherwise
|
|
124
|
-
*
|
|
125
|
-
* @see https://coxdocs.dev/oxmysql/Functions/transaction
|
|
126
|
-
*/
|
|
127
|
-
abstract transaction(queries: TransactionInput, sharedParams?: TransactionSharedParams): Promise<boolean>;
|
|
128
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Database Contract
|
|
4
|
-
*
|
|
5
|
-
* Abstract base class that defines the interface for all database adapters.
|
|
6
|
-
* Implement this contract to create custom database adapters.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* class MyDatabaseAdapter extends DatabaseContract {
|
|
11
|
-
* async query<T>(sql: string, params?: any[]): Promise<T[]> {
|
|
12
|
-
* // Implementation
|
|
13
|
-
* }
|
|
14
|
-
* // ... other methods
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.DatabaseContract = void 0;
|
|
20
|
-
/**
|
|
21
|
-
* Abstract contract for database adapters.
|
|
22
|
-
*
|
|
23
|
-
* All database adapters must extend this class and implement
|
|
24
|
-
* all abstract methods to ensure consistent behavior across
|
|
25
|
-
* different database backends.
|
|
26
|
-
*/
|
|
27
|
-
class DatabaseContract {
|
|
28
|
-
}
|
|
29
|
-
exports.DatabaseContract = DatabaseContract;
|