hysteria-orm 10.7.3 → 10.7.5
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/lib/cli.js +56 -28
- package/lib/cli.js.map +1 -1
- package/lib/index.cjs +55 -27
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +591 -367
- package/lib/index.d.ts +591 -367
- package/lib/index.js +55 -27
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ import { PoolConfig, PoolClient, QueryResult as QueryResult$1 } from 'pg';
|
|
|
10
10
|
import * as mysql2_promise from 'mysql2/promise';
|
|
11
11
|
import { PoolOptions, PoolConnection, QueryResult } from 'mysql2/promise';
|
|
12
12
|
import { RedisOptions, Redis } from 'ioredis';
|
|
13
|
-
import express from 'express';
|
|
14
13
|
import { FormatOptionsWithLanguage } from 'sql-formatter';
|
|
14
|
+
import express from 'express';
|
|
15
15
|
import { PassThrough } from 'node:stream';
|
|
16
16
|
|
|
17
17
|
type CaseConvention = "camel" | "snake" | "preserve" | RegExp | ((column: string) => string);
|
|
@@ -949,6 +949,262 @@ type OpenApiModelPropertyType = {
|
|
|
949
949
|
nullable?: boolean;
|
|
950
950
|
};
|
|
951
951
|
|
|
952
|
+
interface CacheAdapter {
|
|
953
|
+
/**
|
|
954
|
+
* @description Gets a value from the cache
|
|
955
|
+
* @param key The key to get the value from
|
|
956
|
+
* @returns The value from the cache
|
|
957
|
+
*/
|
|
958
|
+
get<T = void>(key: string): Promise<T>;
|
|
959
|
+
/**
|
|
960
|
+
* @description Sets a value in the cache
|
|
961
|
+
* @param key The key to set the value to
|
|
962
|
+
* @param data The value to set in the cache
|
|
963
|
+
* @param ttl The time to live for the value in milliseconds
|
|
964
|
+
*/
|
|
965
|
+
set<T = any>(key: string, data: T, ttl?: number): Promise<void>;
|
|
966
|
+
/**
|
|
967
|
+
* @description Invalidates a value from the cache
|
|
968
|
+
* @param key The key to invalidate the value from
|
|
969
|
+
*/
|
|
970
|
+
invalidate(key: string): Promise<void>;
|
|
971
|
+
/**
|
|
972
|
+
* @description Invalidates all values from the cache starting with the given key
|
|
973
|
+
* @param key The key to invalidate the values from
|
|
974
|
+
*/
|
|
975
|
+
invalidateAll(key: string): Promise<void>;
|
|
976
|
+
/**
|
|
977
|
+
* @description Disconnects from the cache adapter if needed when the data source disconnects
|
|
978
|
+
*/
|
|
979
|
+
disconnect?(): Promise<void>;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
type CacheKeys = Record<string, (...args: any[]) => Promise<any> | any>;
|
|
983
|
+
type UseCacheReturnType<C extends CacheKeys, K extends keyof C> = K extends never ? never : Awaited<ReturnType<C[K]>>;
|
|
984
|
+
|
|
985
|
+
type Sqlite3ConnectionOptions = {
|
|
986
|
+
mode: number;
|
|
987
|
+
};
|
|
988
|
+
type SqlDriverSpecificOptions<T extends DataSourceType> = Omit<DriverSpecificOptions<T>, "mongoOptions" | "redisOptions">;
|
|
989
|
+
type MysqlConnectionInstance = Awaited<ReturnType<Mysql2Import["createPool"]>>;
|
|
990
|
+
type PgPoolClientInstance = InstanceType<PgImport["Pool"]>;
|
|
991
|
+
type SqliteConnectionInstance = InstanceType<Sqlite3Import["Database"]>;
|
|
992
|
+
type OracleDBPoolInstance = Pool;
|
|
993
|
+
type MssqlPoolInstance = InstanceType<MssqlImport["ConnectionPool"]>;
|
|
994
|
+
type MssqlConnectionInstance = Awaited<ReturnType<MssqlPoolInstance["connect"]>>;
|
|
995
|
+
type SqlPoolType = OracleDBPoolInstance | MysqlConnectionInstance | PgPoolClientInstance | SqliteConnectionInstance | MssqlPoolInstance;
|
|
996
|
+
/**
|
|
997
|
+
* @description The connection policies for the sql data source
|
|
998
|
+
* @default the connection policies are not set, so no query will be retried
|
|
999
|
+
*/
|
|
1000
|
+
type ConnectionPolicies = {
|
|
1001
|
+
/**
|
|
1002
|
+
* @description The retry policy for the sql data source, it allows to retry a query if it fails
|
|
1003
|
+
*/
|
|
1004
|
+
retry?: {
|
|
1005
|
+
maxRetries?: number;
|
|
1006
|
+
delay?: number;
|
|
1007
|
+
};
|
|
1008
|
+
};
|
|
1009
|
+
/**
|
|
1010
|
+
* Accepts both decorator-based model classes (`typeof Model` subclasses)
|
|
1011
|
+
* and programmatic models created via `defineModel`.
|
|
1012
|
+
*/
|
|
1013
|
+
type SqlDataSourceModel = AnyModelConstructor;
|
|
1014
|
+
/**
|
|
1015
|
+
* @description Base migration configuration options available for all databases
|
|
1016
|
+
*/
|
|
1017
|
+
type MigrationConfigBase = {
|
|
1018
|
+
/**
|
|
1019
|
+
* @description The path to the migrations folder, can be overridden in the cli command
|
|
1020
|
+
* @default "database/migrations"
|
|
1021
|
+
*/
|
|
1022
|
+
path?: string;
|
|
1023
|
+
/**
|
|
1024
|
+
* @description Path to the tsconfig.json file for TypeScript migration files, can be overridden in the cli command
|
|
1025
|
+
* @default "./tsconfig.json"
|
|
1026
|
+
*/
|
|
1027
|
+
tsconfig?: string;
|
|
1028
|
+
/**
|
|
1029
|
+
* @description Acquire advisory lock before running migrations to prevent concurrent execution, can be overridden in the cli command
|
|
1030
|
+
* @default true
|
|
1031
|
+
*/
|
|
1032
|
+
lock?: boolean;
|
|
1033
|
+
/**
|
|
1034
|
+
* @description Lock timeout in milliseconds for migration advisory lock acquisition, can be overridden in the cli command
|
|
1035
|
+
* @default 30000
|
|
1036
|
+
*/
|
|
1037
|
+
lockTimeout?: number;
|
|
1038
|
+
};
|
|
1039
|
+
/**
|
|
1040
|
+
* @description Migration configuration with transactional support for PostgreSQL and CockroachDB
|
|
1041
|
+
*/
|
|
1042
|
+
type MigrationConfigWithTransactional = MigrationConfigBase & {
|
|
1043
|
+
/**
|
|
1044
|
+
* @description Runs all pending migrations in a single transaction, can be overridden in the cli command
|
|
1045
|
+
* @default true
|
|
1046
|
+
* @note Only available for PostgreSQL and CockroachDB
|
|
1047
|
+
*/
|
|
1048
|
+
transactional?: boolean;
|
|
1049
|
+
};
|
|
1050
|
+
/**
|
|
1051
|
+
* @description Migration configuration type based on database type
|
|
1052
|
+
* @description Adds transactional option only for PostgreSQL and CockroachDB
|
|
1053
|
+
*/
|
|
1054
|
+
type MigrationConfig<D extends SqlDataSourceType = SqlDataSourceType> = D extends "postgres" | "cockroachdb" ? MigrationConfigWithTransactional : MigrationConfigBase;
|
|
1055
|
+
/**
|
|
1056
|
+
* @description Seeder configuration options
|
|
1057
|
+
*/
|
|
1058
|
+
type SeederConfig = {
|
|
1059
|
+
/**
|
|
1060
|
+
* @description The path to the seeders folder
|
|
1061
|
+
* @default "database/seeders"
|
|
1062
|
+
*/
|
|
1063
|
+
path?: string;
|
|
1064
|
+
/**
|
|
1065
|
+
* @description Path to the tsconfig.json file for TypeScript seeder files
|
|
1066
|
+
* @default "./tsconfig.json"
|
|
1067
|
+
*/
|
|
1068
|
+
tsconfig?: string;
|
|
1069
|
+
};
|
|
1070
|
+
/**
|
|
1071
|
+
* @description Common input properties shared across all SqlDataSource types
|
|
1072
|
+
*/
|
|
1073
|
+
type SqlDataSourceInputBase<T extends Record<string, SqlDataSourceModel> = {}, C extends CacheKeys = {}, D extends SqlDataSourceType = SqlDataSourceType> = {
|
|
1074
|
+
/**
|
|
1075
|
+
* @description Whether to log the sql queries and other debug information. Can be a boolean or a LoggerConfig object for granular control.
|
|
1076
|
+
* @warning Logs are synchronous by default and add overhead — do not use in production unless you override with an async custom logger.
|
|
1077
|
+
* @default false
|
|
1078
|
+
*/
|
|
1079
|
+
readonly logs?: boolean | LoggerConfig;
|
|
1080
|
+
/**
|
|
1081
|
+
* @description The connection policies to use for the sql data source that are not configured in the driverOptions
|
|
1082
|
+
*/
|
|
1083
|
+
connectionPolicies?: ConnectionPolicies;
|
|
1084
|
+
/**
|
|
1085
|
+
* @description The query format options to use for the sql data source, it tells how the sql queries should be formatted before being executed and logged
|
|
1086
|
+
*/
|
|
1087
|
+
queryFormatOptions?: FormatOptionsWithLanguage;
|
|
1088
|
+
/**
|
|
1089
|
+
* @description The models to use for the sql data source, if used models will be registered in the sql data source instance and will be available for the models to use
|
|
1090
|
+
* @description Models can still be used as standalone entities, but they won't be available for the sql data source instance
|
|
1091
|
+
*/
|
|
1092
|
+
models?: T;
|
|
1093
|
+
/**
|
|
1094
|
+
* @description Migration configuration for the sql data source
|
|
1095
|
+
*/
|
|
1096
|
+
migrations?: MigrationConfig<D>;
|
|
1097
|
+
/**
|
|
1098
|
+
* @description Seeder configuration for the sql data source
|
|
1099
|
+
*/
|
|
1100
|
+
seeders?: SeederConfig;
|
|
1101
|
+
/**
|
|
1102
|
+
* @description The cache strategy to use for the sql data source, it's used to configure the cache strategy for the sql data source
|
|
1103
|
+
*/
|
|
1104
|
+
cacheStrategy?: {
|
|
1105
|
+
cacheAdapter?: CacheAdapter;
|
|
1106
|
+
keys: C;
|
|
1107
|
+
};
|
|
1108
|
+
/**
|
|
1109
|
+
* @description AdminJS configuration for the admin panel
|
|
1110
|
+
* @description To use AdminJS, install: `npm install adminjs`
|
|
1111
|
+
*/
|
|
1112
|
+
adminJs?: AdminJsOptions;
|
|
1113
|
+
};
|
|
1114
|
+
/**
|
|
1115
|
+
* @description Maps a SqlDataSourceType to its corresponding input interface
|
|
1116
|
+
*/
|
|
1117
|
+
type MapSqlDataSourceTypeToInput<D extends SqlDataSourceType> = D extends "mysql" | "mariadb" ? MysqlSqlDataSourceInput : D extends "postgres" | "cockroachdb" ? PostgresSqlDataSourceInput : D extends "sqlite" ? SqliteDataSourceInput : D extends "mssql" ? MssqlDataSourceInput : D extends "oracledb" ? OracleDBDataSourceInput : never;
|
|
1118
|
+
type SlaveContext = {
|
|
1119
|
+
type: SqlDataSourceType;
|
|
1120
|
+
host: string;
|
|
1121
|
+
port: number;
|
|
1122
|
+
username: string;
|
|
1123
|
+
password: string;
|
|
1124
|
+
database: string;
|
|
1125
|
+
};
|
|
1126
|
+
/**
|
|
1127
|
+
* @description The input type for the SqlDataSource constructor
|
|
1128
|
+
* @description The connectionPolicies object is used to configure the connection policies for the sql data source
|
|
1129
|
+
*/
|
|
1130
|
+
type SqlDataSourceInput<D extends SqlDataSourceType = SqlDataSourceType, T extends Record<string, SqlDataSourceModel> = {}, C extends CacheKeys = {}> = SqlDataSourceInputBase<T, C, D> & {
|
|
1131
|
+
/**
|
|
1132
|
+
* @description The type of the database to connect to
|
|
1133
|
+
*/
|
|
1134
|
+
readonly type: D;
|
|
1135
|
+
/**
|
|
1136
|
+
* @description The driver specific options to use for the sql data source, it's used to configure the driver specific options for the sql data source
|
|
1137
|
+
* @warning For usage with types, you must have driver types installed if the driver handles types in a type package like e.g. `@types/pg`
|
|
1138
|
+
*/
|
|
1139
|
+
driverOptions?: SqlDriverSpecificOptions<D>;
|
|
1140
|
+
/**
|
|
1141
|
+
* @description The replication configuration for the sql data source, it's used to configure the replication for the sql data source
|
|
1142
|
+
*/
|
|
1143
|
+
replication?: {
|
|
1144
|
+
/**
|
|
1145
|
+
* @description The function to call when a slave server fails, if not provided an error will be thrown
|
|
1146
|
+
*/
|
|
1147
|
+
onSlaveServerFailure?: (error: Error, context: SlaveContext) => void | Promise<void>;
|
|
1148
|
+
/**
|
|
1149
|
+
* @description The slaves data sources to use for the sql data source, slaves are automatically used for read operations unless specified otherwise
|
|
1150
|
+
*/
|
|
1151
|
+
slaves?: Omit<UseConnectionInput<D, T, C>, "slaves" | "models" | "cacheStrategy" | "adminJs" | "logs" | "queryFormatOptions" | "migrations">[];
|
|
1152
|
+
/**
|
|
1153
|
+
* @description The algorithm to use for selecting the slave for read operations
|
|
1154
|
+
* @default "roundRobin" - Distributes requests evenly across all slaves in sequence
|
|
1155
|
+
* @option "random" - Randomly selects a slave for each request
|
|
1156
|
+
*/
|
|
1157
|
+
slaveAlgorithm?: SlaveAlgorithm;
|
|
1158
|
+
};
|
|
1159
|
+
} & Omit<MapSqlDataSourceTypeToInput<D>, "type">;
|
|
1160
|
+
/**
|
|
1161
|
+
* @description Maps a SqlDataSourceType to its corresponding non-nullable input interface
|
|
1162
|
+
*/
|
|
1163
|
+
type MapSqlDataSourceTypeToNotNullableInput<D extends SqlDataSourceType> = D extends "mysql" | "mariadb" ? NotNullableMysqlSqlDataSourceInput : D extends "postgres" | "cockroachdb" ? NotNullablePostgresSqlDataSourceInput : D extends "sqlite" ? NotNullableSqliteDataSourceInput : D extends "mssql" ? NotNullableOracleMssqlDataSourceInput : D extends "oracledb" ? NotNullableOracleDBDataSourceInput : never;
|
|
1164
|
+
type UseConnectionInput<D extends SqlDataSourceType = SqlDataSourceType, T extends Record<string, SqlDataSourceModel> = {}, C extends CacheKeys = {}> = {
|
|
1165
|
+
/**
|
|
1166
|
+
* @description The type of the database to connect to
|
|
1167
|
+
*/
|
|
1168
|
+
readonly type: D;
|
|
1169
|
+
readonly logs?: boolean | LoggerConfig;
|
|
1170
|
+
readonly models?: T;
|
|
1171
|
+
readonly driverOptions?: SqlDriverSpecificOptions<D>;
|
|
1172
|
+
connectionPolicies?: ConnectionPolicies;
|
|
1173
|
+
queryFormatOptions?: FormatOptionsWithLanguage;
|
|
1174
|
+
cacheStrategy?: {
|
|
1175
|
+
cacheAdapter: CacheAdapter;
|
|
1176
|
+
keys: C;
|
|
1177
|
+
};
|
|
1178
|
+
/**
|
|
1179
|
+
* @description AdminJS configuration for the admin panel
|
|
1180
|
+
* @description AdminJS is completely optional - dependencies are loaded at runtime via dynamic import()
|
|
1181
|
+
*/
|
|
1182
|
+
adminJs?: AdminJsOptions;
|
|
1183
|
+
} & Omit<MapSqlDataSourceTypeToNotNullableInput<D>, "type">;
|
|
1184
|
+
type SqlDataSourceType = Exclude<DataSourceType, "mongo">;
|
|
1185
|
+
type SqlCloneOptions = {
|
|
1186
|
+
/**
|
|
1187
|
+
* @description Whether to recreate the pool of connections for the given driver, by default it's false
|
|
1188
|
+
* @warning If false, the pool of connections will be reused from the caller instance
|
|
1189
|
+
*/
|
|
1190
|
+
shouldRecreatePool?: boolean;
|
|
1191
|
+
};
|
|
1192
|
+
type getPoolReturnType<T = SqlDataSourceType> = T extends "mysql" ? MysqlConnectionInstance : T extends "mariadb" ? MysqlConnectionInstance : T extends "postgres" ? PgPoolClientInstance : T extends "cockroachdb" ? PgPoolClientInstance : T extends "sqlite" ? SqliteConnectionInstance : T extends "mssql" ? MssqlPoolInstance : T extends "oracledb" ? OracleDBPoolInstance : never;
|
|
1193
|
+
type GetConnectionReturnType<T = SqlDataSourceType> = T extends "mysql" ? PoolConnection : T extends "mariadb" ? PoolConnection : T extends "postgres" ? PoolClient : T extends "cockroachdb" ? PoolClient : T extends "sqlite" ? InstanceType<Sqlite3Import["Database"]> : T extends "mssql" ? Transaction$1 : T extends "oracledb" ? Connection : never;
|
|
1194
|
+
/** Only accepts formats `string` e `string as string` */
|
|
1195
|
+
type NoSpace<S extends string> = S extends `${infer _} ${infer _}` ? never : S;
|
|
1196
|
+
type TableFormat<S extends string> = NoSpace<S> | (S extends `${infer L} as ${infer R}` ? `${NoSpace<L>} as ${NoSpace<R>}` : never);
|
|
1197
|
+
type ReplicationType = "master" | "slave";
|
|
1198
|
+
/**
|
|
1199
|
+
* @description Algorithm for selecting a slave database for read operations
|
|
1200
|
+
* @option "roundRobin" - Distributes requests evenly across all slaves in sequence
|
|
1201
|
+
* @option "random" - Randomly selects a slave for each request
|
|
1202
|
+
*/
|
|
1203
|
+
type SlaveAlgorithm = "roundRobin" | "random";
|
|
1204
|
+
type RawQueryOptions = {
|
|
1205
|
+
replicationMode?: ReplicationType;
|
|
1206
|
+
};
|
|
1207
|
+
|
|
952
1208
|
/**
|
|
953
1209
|
* @description AdminJS plugin types - All AdminJS imports are done at runtime via dynamic import()
|
|
954
1210
|
* @description This ensures the plugin is completely optional
|
|
@@ -976,7 +1232,7 @@ type AdminJsOptions = {
|
|
|
976
1232
|
* @description Models to expose in the AdminJS panel
|
|
977
1233
|
* @description If not provided, all models registered in the SqlDataSource will be used
|
|
978
1234
|
*/
|
|
979
|
-
resources?:
|
|
1235
|
+
resources?: SqlDataSourceModel[];
|
|
980
1236
|
/**
|
|
981
1237
|
* @description Custom resource options for specific models
|
|
982
1238
|
*/
|
|
@@ -1195,366 +1451,114 @@ type AdminJsLocale = {
|
|
|
1195
1451
|
*/
|
|
1196
1452
|
language?: string;
|
|
1197
1453
|
/**
|
|
1198
|
-
* @description Available languages
|
|
1199
|
-
*/
|
|
1200
|
-
availableLanguages?: string[];
|
|
1201
|
-
/**
|
|
1202
|
-
* @description Custom translations
|
|
1203
|
-
*/
|
|
1204
|
-
translations?: Record<string, Record<string, unknown>>;
|
|
1205
|
-
/**
|
|
1206
|
-
* @description Whether to show the language selector
|
|
1207
|
-
*/
|
|
1208
|
-
withBackend?: boolean;
|
|
1209
|
-
};
|
|
1210
|
-
type AdminJsAssets = {
|
|
1211
|
-
/**
|
|
1212
|
-
* @description Custom styles to include
|
|
1213
|
-
*/
|
|
1214
|
-
styles?: string[];
|
|
1215
|
-
/**
|
|
1216
|
-
* @description Custom scripts to include
|
|
1217
|
-
*/
|
|
1218
|
-
scripts?: string[];
|
|
1219
|
-
};
|
|
1220
|
-
type AdminJsSettings = {
|
|
1221
|
-
/**
|
|
1222
|
-
* @description Default number of items per page
|
|
1223
|
-
*/
|
|
1224
|
-
defaultPerPage?: number;
|
|
1225
|
-
};
|
|
1226
|
-
type AdminJsPage = {
|
|
1227
|
-
/**
|
|
1228
|
-
* @description Page component path
|
|
1229
|
-
*/
|
|
1230
|
-
component?: string;
|
|
1231
|
-
/**
|
|
1232
|
-
* @description Page icon
|
|
1233
|
-
*/
|
|
1234
|
-
icon?: string;
|
|
1235
|
-
/**
|
|
1236
|
-
* @description Handler for the page
|
|
1237
|
-
*/
|
|
1238
|
-
handler?: (request: unknown, response: unknown, context: unknown) => Promise<unknown>;
|
|
1239
|
-
};
|
|
1240
|
-
type AdminJsAdminInstance = {
|
|
1241
|
-
options: {
|
|
1242
|
-
rootPath: string;
|
|
1243
|
-
[key: string]: unknown;
|
|
1244
|
-
};
|
|
1245
|
-
watch: () => Promise<void>;
|
|
1246
|
-
initialize: () => Promise<void>;
|
|
1247
|
-
resources: unknown[];
|
|
1248
|
-
findResource: (resourceId: string) => unknown;
|
|
1249
|
-
};
|
|
1250
|
-
/**
|
|
1251
|
-
* @description Return type for getAdminJs method
|
|
1252
|
-
*/
|
|
1253
|
-
type AdminJsInstance = {
|
|
1254
|
-
/**
|
|
1255
|
-
* @description The AdminJS instance
|
|
1256
|
-
*/
|
|
1257
|
-
admin: AdminJsAdminInstance;
|
|
1258
|
-
/**
|
|
1259
|
-
* @description Express router for AdminJS (if using express adapter)
|
|
1260
|
-
*/
|
|
1261
|
-
router?: ReturnType<typeof express.Router>;
|
|
1262
|
-
};
|
|
1263
|
-
|
|
1264
|
-
interface CacheAdapter {
|
|
1265
|
-
/**
|
|
1266
|
-
* @description Gets a value from the cache
|
|
1267
|
-
* @param key The key to get the value from
|
|
1268
|
-
* @returns The value from the cache
|
|
1269
|
-
*/
|
|
1270
|
-
get<T = void>(key: string): Promise<T>;
|
|
1271
|
-
/**
|
|
1272
|
-
* @description Sets a value in the cache
|
|
1273
|
-
* @param key The key to set the value to
|
|
1274
|
-
* @param data The value to set in the cache
|
|
1275
|
-
* @param ttl The time to live for the value in milliseconds
|
|
1276
|
-
*/
|
|
1277
|
-
set<T = any>(key: string, data: T, ttl?: number): Promise<void>;
|
|
1278
|
-
/**
|
|
1279
|
-
* @description Invalidates a value from the cache
|
|
1280
|
-
* @param key The key to invalidate the value from
|
|
1281
|
-
*/
|
|
1282
|
-
invalidate(key: string): Promise<void>;
|
|
1283
|
-
/**
|
|
1284
|
-
* @description Invalidates all values from the cache starting with the given key
|
|
1285
|
-
* @param key The key to invalidate the values from
|
|
1286
|
-
*/
|
|
1287
|
-
invalidateAll(key: string): Promise<void>;
|
|
1288
|
-
/**
|
|
1289
|
-
* @description Disconnects from the cache adapter if needed when the data source disconnects
|
|
1290
|
-
*/
|
|
1291
|
-
disconnect?(): Promise<void>;
|
|
1292
|
-
}
|
|
1293
|
-
|
|
1294
|
-
type CacheKeys = Record<string, (...args: any[]) => Promise<any> | any>;
|
|
1295
|
-
type UseCacheReturnType<C extends CacheKeys, K extends keyof C> = K extends never ? never : Awaited<ReturnType<C[K]>>;
|
|
1296
|
-
|
|
1297
|
-
declare abstract class QueryNode {
|
|
1298
|
-
/**
|
|
1299
|
-
* Sql keyword to use for the query e.g. "select"
|
|
1300
|
-
*/
|
|
1301
|
-
keyword: string;
|
|
1302
|
-
/**
|
|
1303
|
-
* The current parameter index to use for the query
|
|
1304
|
-
*/
|
|
1305
|
-
currParamIndex: number;
|
|
1306
|
-
/**
|
|
1307
|
-
* Whether the query node is a raw value and should not be parsed by the interpreter
|
|
1308
|
-
*/
|
|
1309
|
-
isRawValue: boolean;
|
|
1310
|
-
/**
|
|
1311
|
-
* Whether the keyword can be seen multiple times in the query, e.g. "join" can be seen multiple times in a query
|
|
1312
|
-
*/
|
|
1313
|
-
abstract canKeywordBeSeenMultipleTimes: boolean;
|
|
1314
|
-
/**
|
|
1315
|
-
* The string to use to chain the keyword with the next keyword
|
|
1316
|
-
*/
|
|
1317
|
-
abstract chainsWith: string;
|
|
1318
|
-
/**
|
|
1319
|
-
* The folder to use for the query node, e.g. "select" is in the "select" folder inside the interpreter map
|
|
1320
|
-
*/
|
|
1321
|
-
abstract folder: string;
|
|
1322
|
-
/**
|
|
1323
|
-
* The file to use for the query node, e.g. "select" is in the "select" file inside the interpreter map
|
|
1324
|
-
*/
|
|
1325
|
-
abstract file: string;
|
|
1326
|
-
constructor(keyword: string, isRawValue?: boolean);
|
|
1327
|
-
}
|
|
1328
|
-
|
|
1329
|
-
declare class RawNode extends QueryNode {
|
|
1330
|
-
rawValue: string;
|
|
1331
|
-
canKeywordBeSeenMultipleTimes: boolean;
|
|
1332
|
-
chainsWith: string;
|
|
1333
|
-
currParamIndex: number;
|
|
1334
|
-
isRawValue: boolean;
|
|
1335
|
-
folder: string;
|
|
1336
|
-
file: string;
|
|
1337
|
-
constructor(value: string);
|
|
1338
|
-
}
|
|
1339
|
-
|
|
1340
|
-
type Sqlite3ConnectionOptions = {
|
|
1341
|
-
mode: number;
|
|
1342
|
-
};
|
|
1343
|
-
type SqlDriverSpecificOptions<T extends DataSourceType> = Omit<DriverSpecificOptions<T>, "mongoOptions" | "redisOptions">;
|
|
1344
|
-
type MysqlConnectionInstance = Awaited<ReturnType<Mysql2Import["createPool"]>>;
|
|
1345
|
-
type PgPoolClientInstance = InstanceType<PgImport["Pool"]>;
|
|
1346
|
-
type SqliteConnectionInstance = InstanceType<Sqlite3Import["Database"]>;
|
|
1347
|
-
type OracleDBPoolInstance = Pool;
|
|
1348
|
-
type MssqlPoolInstance = InstanceType<MssqlImport["ConnectionPool"]>;
|
|
1349
|
-
type MssqlConnectionInstance = Awaited<ReturnType<MssqlPoolInstance["connect"]>>;
|
|
1350
|
-
type SqlPoolType = OracleDBPoolInstance | MysqlConnectionInstance | PgPoolClientInstance | SqliteConnectionInstance | MssqlPoolInstance;
|
|
1351
|
-
/**
|
|
1352
|
-
* @description The connection policies for the sql data source
|
|
1353
|
-
* @default the connection policies are not set, so no query will be retried
|
|
1354
|
-
*/
|
|
1355
|
-
type ConnectionPolicies = {
|
|
1356
|
-
/**
|
|
1357
|
-
* @description The retry policy for the sql data source, it allows to retry a query if it fails
|
|
1358
|
-
*/
|
|
1359
|
-
retry?: {
|
|
1360
|
-
maxRetries?: number;
|
|
1361
|
-
delay?: number;
|
|
1362
|
-
};
|
|
1363
|
-
};
|
|
1364
|
-
type SqlDataSourceModel = typeof Model;
|
|
1365
|
-
/**
|
|
1366
|
-
* @description Base migration configuration options available for all databases
|
|
1367
|
-
*/
|
|
1368
|
-
type MigrationConfigBase = {
|
|
1369
|
-
/**
|
|
1370
|
-
* @description The path to the migrations folder, can be overridden in the cli command
|
|
1371
|
-
* @default "database/migrations"
|
|
1372
|
-
*/
|
|
1373
|
-
path?: string;
|
|
1374
|
-
/**
|
|
1375
|
-
* @description Path to the tsconfig.json file for TypeScript migration files, can be overridden in the cli command
|
|
1376
|
-
* @default "./tsconfig.json"
|
|
1377
|
-
*/
|
|
1378
|
-
tsconfig?: string;
|
|
1379
|
-
/**
|
|
1380
|
-
* @description Acquire advisory lock before running migrations to prevent concurrent execution, can be overridden in the cli command
|
|
1381
|
-
* @default true
|
|
1382
|
-
*/
|
|
1383
|
-
lock?: boolean;
|
|
1384
|
-
/**
|
|
1385
|
-
* @description Lock timeout in milliseconds for migration advisory lock acquisition, can be overridden in the cli command
|
|
1386
|
-
* @default 30000
|
|
1387
|
-
*/
|
|
1388
|
-
lockTimeout?: number;
|
|
1389
|
-
};
|
|
1390
|
-
/**
|
|
1391
|
-
* @description Migration configuration with transactional support for PostgreSQL and CockroachDB
|
|
1392
|
-
*/
|
|
1393
|
-
type MigrationConfigWithTransactional = MigrationConfigBase & {
|
|
1394
|
-
/**
|
|
1395
|
-
* @description Runs all pending migrations in a single transaction, can be overridden in the cli command
|
|
1396
|
-
* @default true
|
|
1397
|
-
* @note Only available for PostgreSQL and CockroachDB
|
|
1398
|
-
*/
|
|
1399
|
-
transactional?: boolean;
|
|
1400
|
-
};
|
|
1401
|
-
/**
|
|
1402
|
-
* @description Migration configuration type based on database type
|
|
1403
|
-
* @description Adds transactional option only for PostgreSQL and CockroachDB
|
|
1404
|
-
*/
|
|
1405
|
-
type MigrationConfig<D extends SqlDataSourceType = SqlDataSourceType> = D extends "postgres" | "cockroachdb" ? MigrationConfigWithTransactional : MigrationConfigBase;
|
|
1406
|
-
/**
|
|
1407
|
-
* @description Seeder configuration options
|
|
1408
|
-
*/
|
|
1409
|
-
type SeederConfig = {
|
|
1410
|
-
/**
|
|
1411
|
-
* @description The path to the seeders folder
|
|
1412
|
-
* @default "database/seeders"
|
|
1413
|
-
*/
|
|
1414
|
-
path?: string;
|
|
1415
|
-
/**
|
|
1416
|
-
* @description Path to the tsconfig.json file for TypeScript seeder files
|
|
1417
|
-
* @default "./tsconfig.json"
|
|
1454
|
+
* @description Available languages
|
|
1418
1455
|
*/
|
|
1419
|
-
|
|
1420
|
-
};
|
|
1421
|
-
/**
|
|
1422
|
-
* @description Common input properties shared across all SqlDataSource types
|
|
1423
|
-
*/
|
|
1424
|
-
type SqlDataSourceInputBase<T extends Record<string, SqlDataSourceModel> = {}, C extends CacheKeys = {}, D extends SqlDataSourceType = SqlDataSourceType> = {
|
|
1456
|
+
availableLanguages?: string[];
|
|
1425
1457
|
/**
|
|
1426
|
-
* @description
|
|
1427
|
-
* @warning Logs are synchronous by default and add overhead — do not use in production unless you override with an async custom logger.
|
|
1428
|
-
* @default false
|
|
1458
|
+
* @description Custom translations
|
|
1429
1459
|
*/
|
|
1430
|
-
|
|
1460
|
+
translations?: Record<string, Record<string, unknown>>;
|
|
1431
1461
|
/**
|
|
1432
|
-
* @description
|
|
1462
|
+
* @description Whether to show the language selector
|
|
1433
1463
|
*/
|
|
1434
|
-
|
|
1464
|
+
withBackend?: boolean;
|
|
1465
|
+
};
|
|
1466
|
+
type AdminJsAssets = {
|
|
1435
1467
|
/**
|
|
1436
|
-
* @description
|
|
1468
|
+
* @description Custom styles to include
|
|
1437
1469
|
*/
|
|
1438
|
-
|
|
1470
|
+
styles?: string[];
|
|
1439
1471
|
/**
|
|
1440
|
-
* @description
|
|
1441
|
-
* @description Models can still be used as standalone entities, but they won't be available for the sql data source instance
|
|
1472
|
+
* @description Custom scripts to include
|
|
1442
1473
|
*/
|
|
1443
|
-
|
|
1474
|
+
scripts?: string[];
|
|
1475
|
+
};
|
|
1476
|
+
type AdminJsSettings = {
|
|
1444
1477
|
/**
|
|
1445
|
-
* @description
|
|
1478
|
+
* @description Default number of items per page
|
|
1446
1479
|
*/
|
|
1447
|
-
|
|
1480
|
+
defaultPerPage?: number;
|
|
1481
|
+
};
|
|
1482
|
+
type AdminJsPage = {
|
|
1448
1483
|
/**
|
|
1449
|
-
* @description
|
|
1484
|
+
* @description Page component path
|
|
1450
1485
|
*/
|
|
1451
|
-
|
|
1486
|
+
component?: string;
|
|
1452
1487
|
/**
|
|
1453
|
-
* @description
|
|
1488
|
+
* @description Page icon
|
|
1454
1489
|
*/
|
|
1455
|
-
|
|
1456
|
-
cacheAdapter?: CacheAdapter;
|
|
1457
|
-
keys: C;
|
|
1458
|
-
};
|
|
1490
|
+
icon?: string;
|
|
1459
1491
|
/**
|
|
1460
|
-
* @description
|
|
1461
|
-
* @description To use AdminJS, install: `npm install adminjs`
|
|
1492
|
+
* @description Handler for the page
|
|
1462
1493
|
*/
|
|
1463
|
-
|
|
1494
|
+
handler?: (request: unknown, response: unknown, context: unknown) => Promise<unknown>;
|
|
1464
1495
|
};
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
password: string;
|
|
1475
|
-
database: string;
|
|
1496
|
+
type AdminJsAdminInstance = {
|
|
1497
|
+
options: {
|
|
1498
|
+
rootPath: string;
|
|
1499
|
+
[key: string]: unknown;
|
|
1500
|
+
};
|
|
1501
|
+
watch: () => Promise<void>;
|
|
1502
|
+
initialize: () => Promise<void>;
|
|
1503
|
+
resources: unknown[];
|
|
1504
|
+
findResource: (resourceId: string) => unknown;
|
|
1476
1505
|
};
|
|
1477
1506
|
/**
|
|
1478
|
-
* @description
|
|
1479
|
-
* @description The connectionPolicies object is used to configure the connection policies for the sql data source
|
|
1507
|
+
* @description Return type for getAdminJs method
|
|
1480
1508
|
*/
|
|
1481
|
-
type
|
|
1509
|
+
type AdminJsInstance = {
|
|
1482
1510
|
/**
|
|
1483
|
-
* @description The
|
|
1511
|
+
* @description The AdminJS instance
|
|
1484
1512
|
*/
|
|
1485
|
-
|
|
1513
|
+
admin: AdminJsAdminInstance;
|
|
1486
1514
|
/**
|
|
1487
|
-
* @description
|
|
1488
|
-
* @warning For usage with types, you must have driver types installed if the driver handles types in a type package like e.g. `@types/pg`
|
|
1515
|
+
* @description Express router for AdminJS (if using express adapter)
|
|
1489
1516
|
*/
|
|
1490
|
-
|
|
1517
|
+
router?: ReturnType<typeof express.Router>;
|
|
1518
|
+
};
|
|
1519
|
+
|
|
1520
|
+
declare abstract class QueryNode {
|
|
1491
1521
|
/**
|
|
1492
|
-
*
|
|
1522
|
+
* Sql keyword to use for the query e.g. "select"
|
|
1493
1523
|
*/
|
|
1494
|
-
|
|
1495
|
-
/**
|
|
1496
|
-
* @description The function to call when a slave server fails, if not provided an error will be thrown
|
|
1497
|
-
*/
|
|
1498
|
-
onSlaveServerFailure?: (error: Error, context: SlaveContext) => void | Promise<void>;
|
|
1499
|
-
/**
|
|
1500
|
-
* @description The slaves data sources to use for the sql data source, slaves are automatically used for read operations unless specified otherwise
|
|
1501
|
-
*/
|
|
1502
|
-
slaves?: Omit<UseConnectionInput<D, T, C>, "slaves" | "models" | "cacheStrategy" | "adminJs" | "logs" | "queryFormatOptions" | "migrations">[];
|
|
1503
|
-
/**
|
|
1504
|
-
* @description The algorithm to use for selecting the slave for read operations
|
|
1505
|
-
* @default "roundRobin" - Distributes requests evenly across all slaves in sequence
|
|
1506
|
-
* @option "random" - Randomly selects a slave for each request
|
|
1507
|
-
*/
|
|
1508
|
-
slaveAlgorithm?: SlaveAlgorithm;
|
|
1509
|
-
};
|
|
1510
|
-
} & Omit<MapSqlDataSourceTypeToInput<D>, "type">;
|
|
1511
|
-
/**
|
|
1512
|
-
* @description Maps a SqlDataSourceType to its corresponding non-nullable input interface
|
|
1513
|
-
*/
|
|
1514
|
-
type MapSqlDataSourceTypeToNotNullableInput<D extends SqlDataSourceType> = D extends "mysql" | "mariadb" ? NotNullableMysqlSqlDataSourceInput : D extends "postgres" | "cockroachdb" ? NotNullablePostgresSqlDataSourceInput : D extends "sqlite" ? NotNullableSqliteDataSourceInput : D extends "mssql" ? NotNullableOracleMssqlDataSourceInput : D extends "oracledb" ? NotNullableOracleDBDataSourceInput : never;
|
|
1515
|
-
type UseConnectionInput<D extends SqlDataSourceType = SqlDataSourceType, T extends Record<string, SqlDataSourceModel> = {}, C extends CacheKeys = {}> = {
|
|
1524
|
+
keyword: string;
|
|
1516
1525
|
/**
|
|
1517
|
-
*
|
|
1526
|
+
* The current parameter index to use for the query
|
|
1518
1527
|
*/
|
|
1519
|
-
|
|
1520
|
-
readonly logs?: boolean | LoggerConfig;
|
|
1521
|
-
readonly models?: T;
|
|
1522
|
-
readonly driverOptions?: SqlDriverSpecificOptions<D>;
|
|
1523
|
-
connectionPolicies?: ConnectionPolicies;
|
|
1524
|
-
queryFormatOptions?: FormatOptionsWithLanguage;
|
|
1525
|
-
cacheStrategy?: {
|
|
1526
|
-
cacheAdapter: CacheAdapter;
|
|
1527
|
-
keys: C;
|
|
1528
|
-
};
|
|
1528
|
+
currParamIndex: number;
|
|
1529
1529
|
/**
|
|
1530
|
-
*
|
|
1531
|
-
* @description AdminJS is completely optional - dependencies are loaded at runtime via dynamic import()
|
|
1530
|
+
* Whether the query node is a raw value and should not be parsed by the interpreter
|
|
1532
1531
|
*/
|
|
1533
|
-
|
|
1534
|
-
} & Omit<MapSqlDataSourceTypeToNotNullableInput<D>, "type">;
|
|
1535
|
-
type SqlDataSourceType = Exclude<DataSourceType, "mongo">;
|
|
1536
|
-
type SqlCloneOptions = {
|
|
1532
|
+
isRawValue: boolean;
|
|
1537
1533
|
/**
|
|
1538
|
-
*
|
|
1539
|
-
* @warning If false, the pool of connections will be reused from the caller instance
|
|
1534
|
+
* Whether the keyword can be seen multiple times in the query, e.g. "join" can be seen multiple times in a query
|
|
1540
1535
|
*/
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1536
|
+
abstract canKeywordBeSeenMultipleTimes: boolean;
|
|
1537
|
+
/**
|
|
1538
|
+
* The string to use to chain the keyword with the next keyword
|
|
1539
|
+
*/
|
|
1540
|
+
abstract chainsWith: string;
|
|
1541
|
+
/**
|
|
1542
|
+
* The folder to use for the query node, e.g. "select" is in the "select" folder inside the interpreter map
|
|
1543
|
+
*/
|
|
1544
|
+
abstract folder: string;
|
|
1545
|
+
/**
|
|
1546
|
+
* The file to use for the query node, e.g. "select" is in the "select" file inside the interpreter map
|
|
1547
|
+
*/
|
|
1548
|
+
abstract file: string;
|
|
1549
|
+
constructor(keyword: string, isRawValue?: boolean);
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
declare class RawNode extends QueryNode {
|
|
1553
|
+
rawValue: string;
|
|
1554
|
+
canKeywordBeSeenMultipleTimes: boolean;
|
|
1555
|
+
chainsWith: string;
|
|
1556
|
+
currParamIndex: number;
|
|
1557
|
+
isRawValue: boolean;
|
|
1558
|
+
folder: string;
|
|
1559
|
+
file: string;
|
|
1560
|
+
constructor(value: string);
|
|
1561
|
+
}
|
|
1558
1562
|
|
|
1559
1563
|
declare abstract class BaseBuilder {
|
|
1560
1564
|
protected nodes: QueryNode[];
|
|
@@ -3163,7 +3167,7 @@ type ColumnDataTypeOption = ColumnDataTypeOptionWithLength | ColumnDataTypeOptio
|
|
|
3163
3167
|
type LazyRelationType = {
|
|
3164
3168
|
type?: RelationEnum;
|
|
3165
3169
|
columnName: string;
|
|
3166
|
-
model: () =>
|
|
3170
|
+
model: () => AnyModelConstructor;
|
|
3167
3171
|
foreignKey: string | (() => string);
|
|
3168
3172
|
constraintName: string | (() => string);
|
|
3169
3173
|
onDelete?: OnUpdateOrDelete;
|
|
@@ -3309,11 +3313,11 @@ type ColumnType = {
|
|
|
3309
3313
|
default?: string | number | null | boolean;
|
|
3310
3314
|
};
|
|
3311
3315
|
};
|
|
3312
|
-
type ThroughModelCallback<T extends
|
|
3316
|
+
type ThroughModelCallback<T extends AnyModelConstructor> = () => T;
|
|
3313
3317
|
type ThroughModelString = string;
|
|
3314
|
-
type ThroughModel<T extends
|
|
3318
|
+
type ThroughModel<T extends AnyModelConstructor> = ThroughModelCallback<T> | ThroughModelString;
|
|
3315
3319
|
type ExtractModelFromTM<TM extends ThroughModel<any>> = TM extends ThroughModelCallback<infer T> ? T : never;
|
|
3316
|
-
type ManyToManyOptions<T extends
|
|
3320
|
+
type ManyToManyOptions<T extends AnyModelConstructor, TM extends ThroughModel<T>> = {
|
|
3317
3321
|
/**
|
|
3318
3322
|
* @description The foreign key of current model on the Pivot table
|
|
3319
3323
|
* @example If the current model is User and the through model is UserAddress, the leftForeignKey will be "userId"
|
|
@@ -3337,6 +3341,10 @@ type UniqueType = {
|
|
|
3337
3341
|
columns: string[];
|
|
3338
3342
|
name: string;
|
|
3339
3343
|
};
|
|
3344
|
+
type CheckType = {
|
|
3345
|
+
expression: string;
|
|
3346
|
+
name: string;
|
|
3347
|
+
};
|
|
3340
3348
|
/**
|
|
3341
3349
|
* @description A property decorator that constrains the decorated property to type V.
|
|
3342
3350
|
* TypeScript infers K from the property name and T from the class, then checks
|
|
@@ -3655,12 +3663,12 @@ declare abstract class JoinQueryBuilder<T extends Model, S extends Record<string
|
|
|
3655
3663
|
*/
|
|
3656
3664
|
innerJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3657
3665
|
innerJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn?: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3658
|
-
innerJoin<R extends
|
|
3659
|
-
innerJoin<R extends
|
|
3666
|
+
innerJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3667
|
+
innerJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn?: ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3660
3668
|
innerJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3661
3669
|
innerJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, callback: JoinOnCallback): this;
|
|
3662
|
-
innerJoin<R extends
|
|
3663
|
-
innerJoin<R extends
|
|
3670
|
+
innerJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3671
|
+
innerJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, callback: JoinOnCallback): this;
|
|
3664
3672
|
/**
|
|
3665
3673
|
* @description Join a table with the current model
|
|
3666
3674
|
* @param relationTable - The table to join
|
|
@@ -3670,12 +3678,12 @@ declare abstract class JoinQueryBuilder<T extends Model, S extends Record<string
|
|
|
3670
3678
|
*/
|
|
3671
3679
|
join(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3672
3680
|
join(relationTable: string, referencingColumn: JoinableColumn, primaryColumn?: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3673
|
-
join<R extends
|
|
3674
|
-
join<R extends
|
|
3681
|
+
join<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3682
|
+
join<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn?: ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3675
3683
|
join(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3676
3684
|
join(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, callback: JoinOnCallback): this;
|
|
3677
|
-
join<R extends
|
|
3678
|
-
join<R extends
|
|
3685
|
+
join<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3686
|
+
join<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, callback: JoinOnCallback): this;
|
|
3679
3687
|
/**
|
|
3680
3688
|
* @description Join a table with the current model
|
|
3681
3689
|
* @param relationTable - The table to join
|
|
@@ -3685,12 +3693,12 @@ declare abstract class JoinQueryBuilder<T extends Model, S extends Record<string
|
|
|
3685
3693
|
*/
|
|
3686
3694
|
leftJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3687
3695
|
leftJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn?: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3688
|
-
leftJoin<R extends
|
|
3689
|
-
leftJoin<R extends
|
|
3696
|
+
leftJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3697
|
+
leftJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn?: ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3690
3698
|
leftJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3691
3699
|
leftJoin(relationTable: string, referencingColumn: JoinableColumn, primaryColumn: JoinableColumn, callback: JoinOnCallback): this;
|
|
3692
|
-
leftJoin<R extends
|
|
3693
|
-
leftJoin<R extends
|
|
3700
|
+
leftJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3701
|
+
leftJoin<R extends AnyModelConstructor>(relationModel: R, referencingColumn: ModelKey<InstanceType<R>>, primaryColumn: ModelKey<T>, callback: JoinOnCallback): this;
|
|
3694
3702
|
/**
|
|
3695
3703
|
* @description Join a table with the current model
|
|
3696
3704
|
* @param relationTable - The table to join
|
|
@@ -3700,7 +3708,7 @@ declare abstract class JoinQueryBuilder<T extends Model, S extends Record<string
|
|
|
3700
3708
|
*/
|
|
3701
3709
|
rightJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3702
3710
|
rightJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn?: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3703
|
-
rightJoin<R extends
|
|
3711
|
+
rightJoin<R extends AnyModelConstructor>(relationTable: string | R, referencingColumnOrPrimaryColumn: ModelKey<InstanceType<R>> | JoinableColumn | ModelKey<T>, primaryColumn?: JoinableColumn | ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3704
3712
|
rightJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn: JoinableColumn, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3705
3713
|
rightJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn: JoinableColumn, callback: JoinOnCallback): this;
|
|
3706
3714
|
/**
|
|
@@ -3712,7 +3720,7 @@ declare abstract class JoinQueryBuilder<T extends Model, S extends Record<string
|
|
|
3712
3720
|
*/
|
|
3713
3721
|
fullJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3714
3722
|
fullJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn?: JoinableColumn, operator?: BinaryOperatorType): this;
|
|
3715
|
-
fullJoin<R extends
|
|
3723
|
+
fullJoin<R extends AnyModelConstructor>(relationTable: string | R, referencingColumnOrPrimaryColumn: ModelKey<InstanceType<R>> | JoinableColumn | ModelKey<T>, primaryColumn?: JoinableColumn | ModelKey<T>, operator?: BinaryOperatorType): this;
|
|
3716
3724
|
fullJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn: JoinableColumn, operator: BinaryOperatorType, callback: JoinOnCallback): this;
|
|
3717
3725
|
fullJoin(relationTable: string, referencingColumnOrPrimaryColumn: JoinableColumn, primaryColumn: JoinableColumn, callback: JoinOnCallback): this;
|
|
3718
3726
|
}
|
|
@@ -4619,7 +4627,7 @@ declare class ModelQueryBuilder<T extends Model, S extends Record<string, any> =
|
|
|
4619
4627
|
finally(onfinally?: (() => void) | null | undefined): Promise<SelectedModel<T, S, R>[]>;
|
|
4620
4628
|
chunk(chunkSize: number, options?: ManyOptions): AsyncGenerator<SelectedModel<T, S, R>[] | T[]>;
|
|
4621
4629
|
stream(options?: ManyOptions & StreamOptions): Promise<PassThrough & AsyncGenerator<SelectedModel<T, S, R> | T>>;
|
|
4622
|
-
paginateWithCursor<K extends ModelKey<T>>(
|
|
4630
|
+
paginateWithCursor<K extends ModelKey<T>>(limit: number, options?: PaginateWithCursorOptions<T, K>, cursor?: Cursor<T, K>): Promise<[CursorPaginatedData<T, S, R>, Cursor<T, K>]>;
|
|
4623
4631
|
/**
|
|
4624
4632
|
* @description Inserts a new record into the database, it is not advised to use this method directly from the query builder if using a ModelQueryBuilder (`Model.query()`), use the `Model.insert` method instead.
|
|
4625
4633
|
*/
|
|
@@ -5107,11 +5115,16 @@ type TablePrimaryKeyInfo = {
|
|
|
5107
5115
|
name?: string;
|
|
5108
5116
|
columns: string[];
|
|
5109
5117
|
};
|
|
5118
|
+
type TableCheckConstraintInfo = {
|
|
5119
|
+
name: string;
|
|
5120
|
+
expression: string;
|
|
5121
|
+
};
|
|
5110
5122
|
type TableSchemaInfo = {
|
|
5111
5123
|
columns: TableColumnInfo[];
|
|
5112
5124
|
indexes: TableIndexInfo[];
|
|
5113
5125
|
foreignKeys: TableForeignKeyInfo[];
|
|
5114
5126
|
primaryKey?: TablePrimaryKeyInfo;
|
|
5127
|
+
checkConstraints: TableCheckConstraintInfo[];
|
|
5115
5128
|
};
|
|
5116
5129
|
type TableForeignKeyInfo = {
|
|
5117
5130
|
name?: string;
|
|
@@ -5457,7 +5470,7 @@ declare class SqlDataSource<D extends SqlDataSourceType = SqlDataSourceType, T e
|
|
|
5457
5470
|
* @description Returns a ModelQueryBuilder instance for the given model
|
|
5458
5471
|
* @param Model The model to create the query builder from
|
|
5459
5472
|
*/
|
|
5460
|
-
from<T extends
|
|
5473
|
+
from<T extends AnyModelConstructor>(model: T): ModelQueryBuilder<InstanceType<T>>;
|
|
5461
5474
|
/**
|
|
5462
5475
|
* @description Returns a SchemaBuilder instance for DDL operations
|
|
5463
5476
|
* @description The builder will execute queries when awaited or when .execute() is called
|
|
@@ -5611,6 +5624,10 @@ declare class SqlDataSource<D extends SqlDataSourceType = SqlDataSourceType, T e
|
|
|
5611
5624
|
* @description Introspects table primary key from the database
|
|
5612
5625
|
*/
|
|
5613
5626
|
getPrimaryKeyInfo(table: string): Promise<TablePrimaryKeyInfo | undefined>;
|
|
5627
|
+
/**
|
|
5628
|
+
* @description Introspects table CHECK constraints from the database
|
|
5629
|
+
*/
|
|
5630
|
+
getCheckConstraintInfo(table: string): Promise<TableCheckConstraintInfo[]>;
|
|
5614
5631
|
/**
|
|
5615
5632
|
* @description Acquires an advisory lock
|
|
5616
5633
|
* @description Useful for preventing concurrent operations from running simultaneously
|
|
@@ -5755,7 +5772,7 @@ type RawModelOptions = {
|
|
|
5755
5772
|
* @example
|
|
5756
5773
|
* type UserInstance = ModelInstanceType<typeof User>; // User
|
|
5757
5774
|
*/
|
|
5758
|
-
type ModelInstanceType<O> = O extends
|
|
5775
|
+
type ModelInstanceType<O> = O extends AnyModelConstructor ? InstanceType<O> : never;
|
|
5759
5776
|
/**
|
|
5760
5777
|
* Available fetch hook combinations for query execution.
|
|
5761
5778
|
* Hooks can be selectively ignored when fetching data.
|
|
@@ -6401,6 +6418,7 @@ declare abstract class Model<T extends Model<T> = any> extends Entity {
|
|
|
6401
6418
|
*/
|
|
6402
6419
|
static getIndexes(): IndexType[];
|
|
6403
6420
|
static getUniques(): UniqueType[];
|
|
6421
|
+
static getChecks(): CheckType[];
|
|
6404
6422
|
/**
|
|
6405
6423
|
* @description Defines a column in the model, useful in javascript in order to not have to rely on decorators since are not supported without a transpiler like babel
|
|
6406
6424
|
* @javascript
|
|
@@ -6508,6 +6526,155 @@ declare abstract class Model<T extends Model<T> = any> extends Entity {
|
|
|
6508
6526
|
private static dispatchModelManager;
|
|
6509
6527
|
}
|
|
6510
6528
|
|
|
6529
|
+
/**
|
|
6530
|
+
* Phantom-typed descriptor for a model column.
|
|
6531
|
+
* `T` carries the TypeScript type the column resolves to at the instance level.
|
|
6532
|
+
*/
|
|
6533
|
+
interface ColumnDef<T = any> {
|
|
6534
|
+
readonly _phantom: T;
|
|
6535
|
+
readonly _apply: (target: Object, propertyKey: string) => void;
|
|
6536
|
+
}
|
|
6537
|
+
/**
|
|
6538
|
+
* Phantom-typed descriptor for a model relation.
|
|
6539
|
+
* `T` carries the TypeScript type the relation resolves to at the instance level.
|
|
6540
|
+
*/
|
|
6541
|
+
interface RelationDef<T = any> {
|
|
6542
|
+
readonly _phantom: T;
|
|
6543
|
+
readonly _apply: (target: Object, propertyKey: string) => void;
|
|
6544
|
+
}
|
|
6545
|
+
type ColPrimaryOptions = Omit<ColumnOptions, "primaryKey">;
|
|
6546
|
+
type ColStringOptions = Omit<ColumnOptions, "type"> & {
|
|
6547
|
+
length?: number;
|
|
6548
|
+
};
|
|
6549
|
+
type ColTextOptions = Omit<ColumnOptions, "type">;
|
|
6550
|
+
type ColIntegerOptions = Omit<ColumnOptions, "serialize">;
|
|
6551
|
+
type ColBigIntegerOptions = Omit<ColumnOptions, "serialize">;
|
|
6552
|
+
type ColFloatOptions = Omit<ColumnOptions, "serialize">;
|
|
6553
|
+
type ColDecimalOptions = Omit<ColumnOptions, "serialize"> & {
|
|
6554
|
+
precision?: number;
|
|
6555
|
+
scale?: number;
|
|
6556
|
+
};
|
|
6557
|
+
type ColIncrementOptions = Omit<ColumnOptions, "serialize" | "primaryKey" | "nullable">;
|
|
6558
|
+
type ColBigIncrementOptions = Omit<ColumnOptions, "serialize" | "primaryKey" | "nullable">;
|
|
6559
|
+
type ColBooleanOptions = Omit<ColumnOptions, "prepare" | "serialize">;
|
|
6560
|
+
type ColDateOptions = Omit<DateColumnOptions, "format">;
|
|
6561
|
+
type ColDatetimeOptions = DatetimeColumnOptions;
|
|
6562
|
+
type ColTimestampOptions = DatetimeColumnOptions;
|
|
6563
|
+
type ColTimeOptions = Omit<DateColumnOptions, "format">;
|
|
6564
|
+
type ColJsonOptions = Omit<ColumnOptions, "prepare" | "serialize">;
|
|
6565
|
+
type ColUuidOptions = Omit<ColumnOptions, "prepare">;
|
|
6566
|
+
type ColUlidOptions = Omit<ColumnOptions, "prepare">;
|
|
6567
|
+
type ColBinaryOptions = Omit<ColumnOptions, "type">;
|
|
6568
|
+
type ColSymmetricOptions = Omit<SymmetricEncryptionOptions, "prepare" | "serialize">;
|
|
6569
|
+
type ColAsymmetricOptions = Omit<AsymmetricEncryptionOptions, "prepare" | "serialize">;
|
|
6570
|
+
type RelationConstraintOptions = {
|
|
6571
|
+
onDelete?: OnUpdateOrDelete;
|
|
6572
|
+
onUpdate?: OnUpdateOrDelete;
|
|
6573
|
+
constraintName?: string;
|
|
6574
|
+
};
|
|
6575
|
+
interface ColNamespace {
|
|
6576
|
+
(options?: ColumnOptions): ColumnDef<any>;
|
|
6577
|
+
primary(options?: ColPrimaryOptions): ColumnDef<any>;
|
|
6578
|
+
string(options?: ColStringOptions): ColumnDef<string | null | undefined>;
|
|
6579
|
+
text(options?: ColTextOptions): ColumnDef<string | null | undefined>;
|
|
6580
|
+
integer(options?: ColIntegerOptions): ColumnDef<number | null | undefined>;
|
|
6581
|
+
bigInteger(options?: ColBigIntegerOptions): ColumnDef<number | bigint | null | undefined>;
|
|
6582
|
+
float(options?: ColFloatOptions): ColumnDef<number | null | undefined>;
|
|
6583
|
+
decimal(options?: ColDecimalOptions): ColumnDef<number | null | undefined>;
|
|
6584
|
+
increment(options?: ColIncrementOptions): ColumnDef<number | null | undefined>;
|
|
6585
|
+
bigIncrement(options?: ColBigIncrementOptions): ColumnDef<number | null | undefined>;
|
|
6586
|
+
boolean(options?: ColBooleanOptions): ColumnDef<boolean | null | undefined>;
|
|
6587
|
+
date(options?: ColDateOptions): ColumnDef<Date | string | null | undefined>;
|
|
6588
|
+
datetime(options?: ColDatetimeOptions): ColumnDef<Date | string | null | undefined>;
|
|
6589
|
+
timestamp(options?: ColTimestampOptions): ColumnDef<Date | string | null | undefined>;
|
|
6590
|
+
time(options?: ColTimeOptions): ColumnDef<Date | string | null | undefined>;
|
|
6591
|
+
json(options?: ColJsonOptions): ColumnDef<unknown>;
|
|
6592
|
+
uuid(options?: ColUuidOptions): ColumnDef<string | null | undefined>;
|
|
6593
|
+
ulid(options?: ColUlidOptions): ColumnDef<string | null | undefined>;
|
|
6594
|
+
binary(options?: ColBinaryOptions): ColumnDef<Buffer | Uint8Array | string | null | undefined>;
|
|
6595
|
+
enum<const V extends readonly string[]>(values: V, options?: Omit<ColumnOptions, "type">): ColumnDef<V[number] | null | undefined>;
|
|
6596
|
+
encryption: {
|
|
6597
|
+
symmetric(options: ColSymmetricOptions): ColumnDef<string | null | undefined>;
|
|
6598
|
+
asymmetric(options: ColAsymmetricOptions): ColumnDef<string | null | undefined>;
|
|
6599
|
+
};
|
|
6600
|
+
}
|
|
6601
|
+
type AnyModelClass = abstract new (...args: any[]) => Model;
|
|
6602
|
+
interface RelNamespace {
|
|
6603
|
+
hasOne<M extends AnyModelClass>(model: () => M, foreignKey?: string): RelationDef<InstanceType<M> | null | undefined>;
|
|
6604
|
+
hasMany<M extends AnyModelClass>(model: () => M, foreignKey?: string): RelationDef<InstanceType<M>[] | null | undefined>;
|
|
6605
|
+
belongsTo<M extends AnyModelClass>(model: () => M, foreignKey?: string, options?: RelationConstraintOptions): RelationDef<InstanceType<M> | null | undefined>;
|
|
6606
|
+
manyToMany<M extends AnyModelClass, T extends typeof Model = typeof Model, TM extends ThroughModel<T> = ThroughModel<T>>(model: () => M, throughModel: TM, throughModelKeys?: TM extends string ? ManyToManyStringOptions : ManyToManyOptions<T, TM>, options?: RelationConstraintOptions): RelationDef<InstanceType<M>[] | null | undefined>;
|
|
6607
|
+
}
|
|
6608
|
+
type IndexDefinition = string[] | {
|
|
6609
|
+
columns: string[];
|
|
6610
|
+
name?: string;
|
|
6611
|
+
};
|
|
6612
|
+
type UniqueDefinition = string[] | {
|
|
6613
|
+
columns: string[];
|
|
6614
|
+
name?: string;
|
|
6615
|
+
};
|
|
6616
|
+
type CheckDefinition = string | {
|
|
6617
|
+
expression: string;
|
|
6618
|
+
name?: string;
|
|
6619
|
+
};
|
|
6620
|
+
type HooksDefinition = {
|
|
6621
|
+
beforeFetch?: (queryBuilder: ModelQueryBuilder<any>) => Promise<void> | void;
|
|
6622
|
+
afterFetch?: (data: any[]) => Promise<any[]> | any[];
|
|
6623
|
+
beforeInsert?: (data: any) => Promise<void> | void;
|
|
6624
|
+
beforeInsertMany?: (data: any[]) => Promise<void> | void;
|
|
6625
|
+
beforeUpdate?: (queryBuilder: ModelQueryBuilder<any>) => Promise<void> | void;
|
|
6626
|
+
beforeDelete?: (queryBuilder: ModelQueryBuilder<any>) => Promise<void> | void;
|
|
6627
|
+
};
|
|
6628
|
+
type DefineModelOptions = {
|
|
6629
|
+
modelCaseConvention?: CaseConvention;
|
|
6630
|
+
databaseCaseConvention?: CaseConvention;
|
|
6631
|
+
softDeleteColumn?: string;
|
|
6632
|
+
softDeleteValue?: boolean | string;
|
|
6633
|
+
};
|
|
6634
|
+
type ModelDefinition<C extends Record<string, ColumnDef> = Record<string, ColumnDef>, R extends Record<string, RelationDef> = Record<string, RelationDef>> = {
|
|
6635
|
+
columns: C;
|
|
6636
|
+
relations?: R;
|
|
6637
|
+
indexes?: IndexDefinition[];
|
|
6638
|
+
uniques?: UniqueDefinition[];
|
|
6639
|
+
checks?: CheckDefinition[];
|
|
6640
|
+
hooks?: HooksDefinition;
|
|
6641
|
+
options?: DefineModelOptions;
|
|
6642
|
+
};
|
|
6643
|
+
type InferColumns<C extends Record<string, ColumnDef>> = {
|
|
6644
|
+
[K in keyof C]: C[K] extends ColumnDef<infer T> ? T : never;
|
|
6645
|
+
};
|
|
6646
|
+
type InferRelations<R extends Record<string, RelationDef>> = {
|
|
6647
|
+
[K in keyof R]: R[K] extends RelationDef<infer T> ? T : never;
|
|
6648
|
+
};
|
|
6649
|
+
/**
|
|
6650
|
+
* Infers the instance type of a model defined with `defineModel`.
|
|
6651
|
+
*/
|
|
6652
|
+
type InferModel<C extends Record<string, ColumnDef>, R extends Record<string, RelationDef>> = InferColumns<C> & InferRelations<R>;
|
|
6653
|
+
/**
|
|
6654
|
+
* Public statics of `typeof Model` without the abstract constructor flag.
|
|
6655
|
+
*/
|
|
6656
|
+
type ConcreteModelStatics = {
|
|
6657
|
+
[K in keyof typeof Model]: (typeof Model)[K];
|
|
6658
|
+
};
|
|
6659
|
+
/**
|
|
6660
|
+
* Union type that accepts both decorator-based model classes (`typeof Model`
|
|
6661
|
+
* subclasses) and programmatic models created via `defineModel`.
|
|
6662
|
+
*
|
|
6663
|
+
* Use this instead of `typeof Model` in any user-facing API that should
|
|
6664
|
+
* accept either kind of model.
|
|
6665
|
+
*/
|
|
6666
|
+
type AnyModelConstructor = typeof Model | (ConcreteModelStatics & (new (...args: any[]) => Model));
|
|
6667
|
+
/**
|
|
6668
|
+
* The return type of `defineModel` – a concrete Model constructor whose
|
|
6669
|
+
* instances carry the inferred column + relation properties.
|
|
6670
|
+
*
|
|
6671
|
+
* Uses a mapped type over `typeof Model` so the abstract flag is stripped,
|
|
6672
|
+
* making the result instantiable while keeping all public static members.
|
|
6673
|
+
*/
|
|
6674
|
+
type DefinedModel<C extends Record<string, ColumnDef>, R extends Record<string, RelationDef>> = ConcreteModelStatics & {
|
|
6675
|
+
new (): InferModel<C, R> & Model;
|
|
6676
|
+
};
|
|
6677
|
+
|
|
6511
6678
|
type BaseModelRelationType = {
|
|
6512
6679
|
onDelete?: OnUpdateOrDelete;
|
|
6513
6680
|
onUpdate?: OnUpdateOrDelete;
|
|
@@ -6534,6 +6701,26 @@ type BaseModelRelationType = {
|
|
|
6534
6701
|
*/
|
|
6535
6702
|
declare function index(indexes: string | string[], indexName?: string): ClassDecorator;
|
|
6536
6703
|
declare function unique(columns: string | string[], constraintName?: string): ClassDecorator;
|
|
6704
|
+
/**
|
|
6705
|
+
* @description Decorator to define a CHECK constraint on the model's table
|
|
6706
|
+
* @param expression - The SQL expression for the check constraint (e.g., "age >= 18", "price > 0")
|
|
6707
|
+
* @param constraintName - Optional custom name for the constraint
|
|
6708
|
+
* @example
|
|
6709
|
+
* ```ts
|
|
6710
|
+
* @check("age >= 0")
|
|
6711
|
+
* class User extends Model {
|
|
6712
|
+
* @column()
|
|
6713
|
+
* age!: number;
|
|
6714
|
+
* }
|
|
6715
|
+
*
|
|
6716
|
+
* @check("price > 0", "products_price_positive")
|
|
6717
|
+
* class Product extends Model {
|
|
6718
|
+
* @column()
|
|
6719
|
+
* price!: number;
|
|
6720
|
+
* }
|
|
6721
|
+
* ```
|
|
6722
|
+
*/
|
|
6723
|
+
declare function check(expression: string, constraintName?: string): ClassDecorator;
|
|
6537
6724
|
/**
|
|
6538
6725
|
* @description Decorator to define a view on the model
|
|
6539
6726
|
* @description This will automatically create a view on the database with the given statement
|
|
@@ -6734,7 +6921,7 @@ declare function timeOnlyColumn(options?: Omit<DateColumnOptions, "format">): Ty
|
|
|
6734
6921
|
* @description Defaults type to jsonb for migration generation
|
|
6735
6922
|
*/
|
|
6736
6923
|
declare function jsonColumn(options?: Omit<ColumnOptions, "prepare" | "serialize">): TypedPropertyDecorator<unknown>;
|
|
6737
|
-
declare function getModelColumns(target:
|
|
6924
|
+
declare function getModelColumns(target: AnyModelConstructor): ColumnType[];
|
|
6738
6925
|
/**
|
|
6739
6926
|
* relations
|
|
6740
6927
|
*/
|
|
@@ -6746,22 +6933,22 @@ declare function getModelColumns(target: typeof Model): ColumnType[];
|
|
|
6746
6933
|
* belongsTo<typeof Post>(() => User, 'userId')
|
|
6747
6934
|
* ```
|
|
6748
6935
|
*/
|
|
6749
|
-
declare function belongsTo<M extends
|
|
6750
|
-
declare function belongsTo<R extends
|
|
6936
|
+
declare function belongsTo<M extends AnyModelConstructor = any, R extends AnyModelConstructor = any>(model: () => R, foreignKey?: ModelKey<InstanceType<M>>, options?: BaseModelRelationType): TypedPropertyDecorator<InstanceType<R> | null | undefined>;
|
|
6937
|
+
declare function belongsTo<R extends AnyModelConstructor = any>(model: () => R, foreignKey?: string, options?: BaseModelRelationType): TypedPropertyDecorator<InstanceType<R> | null | undefined>;
|
|
6751
6938
|
/**
|
|
6752
6939
|
* @description Establishes a has one relation with the given model
|
|
6753
6940
|
* @default foreignKey by default will be the singular of the model name plus "_id"
|
|
6754
6941
|
* @example User will have foreignKey "user_id" on the Post model
|
|
6755
6942
|
*/
|
|
6756
|
-
declare function hasOne<T extends
|
|
6757
|
-
declare function hasOne<T extends
|
|
6943
|
+
declare function hasOne<T extends AnyModelConstructor>(model: () => T, foreignKey?: ModelKey<InstanceType<T>>): TypedPropertyDecorator<InstanceType<T> | null | undefined>;
|
|
6944
|
+
declare function hasOne<T extends AnyModelConstructor>(model: () => T, foreignKey?: string): TypedPropertyDecorator<InstanceType<T> | null | undefined>;
|
|
6758
6945
|
/**
|
|
6759
6946
|
* @description Establishes a has many relation with the given model
|
|
6760
6947
|
* @default foreignKey by default will be the singular of the model name plus "_id"
|
|
6761
6948
|
* @example User will have foreignKey "user_id" on the Post model
|
|
6762
6949
|
*/
|
|
6763
|
-
declare function hasMany<T extends
|
|
6764
|
-
declare function hasMany<T extends
|
|
6950
|
+
declare function hasMany<T extends AnyModelConstructor>(model: () => T, foreignKey?: ModelKey<InstanceType<T>>): TypedPropertyDecorator<InstanceType<T>[] | null | undefined>;
|
|
6951
|
+
declare function hasMany<T extends AnyModelConstructor>(model: () => T, foreignKey?: string): TypedPropertyDecorator<InstanceType<T>[] | null | undefined>;
|
|
6765
6952
|
/**
|
|
6766
6953
|
* @description Establishes a many to many relation with the given model
|
|
6767
6954
|
* @default foreignKey by default will be the singular of the model that establishes the relation name plus "_id"
|
|
@@ -6772,19 +6959,56 @@ declare function hasMany<T extends typeof Model>(model: () => T, foreignKey?: st
|
|
|
6772
6959
|
* @param throughModelKeys.rightForeignKey The foreign key of the through model from the related model (the model you are joining to)
|
|
6773
6960
|
* @example User will have foreignKey "user_id" on the Join table by default
|
|
6774
6961
|
*/
|
|
6775
|
-
declare function manyToMany<R extends
|
|
6776
|
-
declare function manyToMany<R extends
|
|
6777
|
-
declare function getRelationsMetadata(target:
|
|
6962
|
+
declare function manyToMany<R extends AnyModelConstructor, T extends AnyModelConstructor, TM extends ThroughModel<T>>(model: () => R, throughModel: TM, throughModelKeys?: ManyToManyOptions<T, TM>, options?: BaseModelRelationType): TypedPropertyDecorator<InstanceType<R>[] | null | undefined>;
|
|
6963
|
+
declare function manyToMany<R extends AnyModelConstructor>(model: () => R, throughModel: string | (() => AnyModelConstructor), throughModelKeys?: ManyToManyStringOptions, options?: BaseModelRelationType): TypedPropertyDecorator<InstanceType<R>[] | null | undefined>;
|
|
6964
|
+
declare function getRelationsMetadata(target: AnyModelConstructor): LazyRelationType[];
|
|
6778
6965
|
/**
|
|
6779
6966
|
* @description Returns the relations of the model
|
|
6780
6967
|
*/
|
|
6781
|
-
declare function getRelations(target:
|
|
6968
|
+
declare function getRelations(target: AnyModelConstructor): Relation[];
|
|
6782
6969
|
/**
|
|
6783
6970
|
* @description Returns the primary key of the model
|
|
6784
6971
|
*/
|
|
6785
|
-
declare function getPrimaryKey(target:
|
|
6786
|
-
declare function getIndexes(target:
|
|
6787
|
-
declare function getUniques(target:
|
|
6972
|
+
declare function getPrimaryKey(target: AnyModelConstructor): string | undefined;
|
|
6973
|
+
declare function getIndexes(target: AnyModelConstructor): IndexType[];
|
|
6974
|
+
declare function getUniques(target: AnyModelConstructor): UniqueType[];
|
|
6975
|
+
declare function getChecks(target: AnyModelConstructor): CheckType[];
|
|
6976
|
+
|
|
6977
|
+
declare const col: ColNamespace;
|
|
6978
|
+
declare const rel: RelNamespace;
|
|
6979
|
+
/**
|
|
6980
|
+
* Creates a fully-typed Model subclass programmatically without decorators.
|
|
6981
|
+
*
|
|
6982
|
+
* The returned class is a real `typeof Model` subclass that works with all
|
|
6983
|
+
* existing infrastructure: `SqlDataSource`, `ModelManager`, `ModelQueryBuilder`,
|
|
6984
|
+
* `SchemaDiff` (automatic migrations), hooks, etc.
|
|
6985
|
+
*
|
|
6986
|
+
* @example
|
|
6987
|
+
* ```typescript
|
|
6988
|
+
* import { defineModel, col, rel } from "hysteria-orm";
|
|
6989
|
+
*
|
|
6990
|
+
* const User = defineModel("users", {
|
|
6991
|
+
* columns: {
|
|
6992
|
+
* id: col.increment(),
|
|
6993
|
+
* name: col.string(),
|
|
6994
|
+
* email: col.string({ nullable: false }),
|
|
6995
|
+
* isActive: col.boolean(),
|
|
6996
|
+
* createdAt: col.datetime({ autoCreate: true }),
|
|
6997
|
+
* updatedAt: col.datetime({ autoCreate: true, autoUpdate: true }),
|
|
6998
|
+
* },
|
|
6999
|
+
* relations: {
|
|
7000
|
+
* posts: rel.hasMany(() => Post, "userId"),
|
|
7001
|
+
* profile: rel.hasOne(() => Profile),
|
|
7002
|
+
* },
|
|
7003
|
+
* indexes: [["email"]],
|
|
7004
|
+
* uniques: [["email"]],
|
|
7005
|
+
* hooks: {
|
|
7006
|
+
* beforeFetch(qb) { qb.whereNull("deleted_at"); },
|
|
7007
|
+
* },
|
|
7008
|
+
* });
|
|
7009
|
+
* ```
|
|
7010
|
+
*/
|
|
7011
|
+
declare function defineModel<C extends Record<string, ColumnDef>, R extends Record<string, RelationDef> = {}>(table: string, definition: ModelDefinition<C, R>): DefinedModel<C, R>;
|
|
6788
7012
|
|
|
6789
7013
|
type FactoryReturnType<T extends number, O extends Model> = T extends 1 ? O : O[];
|
|
6790
7014
|
|
|
@@ -6794,7 +7018,7 @@ declare class ModelFactory<M extends Model> {
|
|
|
6794
7018
|
/**
|
|
6795
7019
|
* @description Constructor for the model factory
|
|
6796
7020
|
*/
|
|
6797
|
-
constructor(typeofModel:
|
|
7021
|
+
constructor(typeofModel: AnyModelConstructor, modelData: Partial<M>);
|
|
6798
7022
|
/**
|
|
6799
7023
|
* @description Merges the provided data with the model data
|
|
6800
7024
|
*/
|
|
@@ -6806,7 +7030,7 @@ declare class ModelFactory<M extends Model> {
|
|
|
6806
7030
|
*/
|
|
6807
7031
|
create<T extends number>(howMany: T): Promise<FactoryReturnType<T, M>>;
|
|
6808
7032
|
}
|
|
6809
|
-
declare const createModelFactory: <M extends Model>(typeofModel:
|
|
7033
|
+
declare const createModelFactory: <M extends Model>(typeofModel: AnyModelConstructor, modelData: Partial<ModelWithoutRelations<M>>) => ModelFactory<M>;
|
|
6810
7034
|
|
|
6811
7035
|
type Constructor<T = Model> = new (...args: any[]) => T;
|
|
6812
7036
|
type AbstractConstructor<T = Model> = abstract new (...args: any[]) => T;
|
|
@@ -7947,4 +8171,4 @@ declare const generateOpenApiModelWithMetadata: <T extends new () => Model>(mode
|
|
|
7947
8171
|
$id?: string;
|
|
7948
8172
|
}>;
|
|
7949
8173
|
|
|
7950
|
-
export { type AbstractConstructor, type AdminJsActionOptions, type AdminJsAssets, type AdminJsBranding, type AdminJsInstance, type AdminJsLocale, type AdminJsOptions, type AdminJsPage, type AdminJsPropertyOptions, type AdminJsResourceOptions, type AdminJsSettings, type AnyConstructor, type AsymmetricEncryptionOptions, type BaseModelMethodOptions, type BaseModelRelationType, BaseSeeder, type BigIntFields, type BuildSelectType, type BuildSingleSelectType, type CacheAdapter, type CacheKeys, ClientMigrator, Collection, type ColumnDataTypeOption, type ColumnDataTypeOptionSimple, type ColumnDataTypeOptionWithBinary, type ColumnDataTypeOptionWithDatePrecision, type ColumnDataTypeOptionWithEnum, type ColumnDataTypeOptionWithLength, type ColumnDataTypeOptionWithPrecision, type ColumnDataTypeOptionWithScaleAndPrecision, type ColumnDataTypeOptionWithText, type ColumnOptions, type ColumnType, type CommonDataSourceInput, type ComposeBuildSelect, type ComposeSelect, type ConnectionPolicies, type Constructor, type CustomLogger, type DataSourceInput, type DataSourceType, type DateColumnOptions, type DatetimeColumnOptions, type ExcludeMethods, type ExtractColumnName, type ExtractSourceColumn, type FetchHooks, type FindReturnType, type GetColumnType, type GetConnectionReturnType, HysteriaError, InMemoryAdapter, type IncrementFields, type IndexType, type LazyRelationType, type LoggerConfig, type ManyOptions, type ManyToManyOptions, type ManyToManyStringOptions, Migration, type MigrationConfig, type MigrationConfigBase, type MixinColumns, MixinFactory, Model, type ModelDataProperties, type ModelInstanceType, type ModelKey, ModelQueryBuilder, type ModelQueryResult, type ModelRelation, type ModelSelectTuple, type ModelSelectableInput, type ModelWithoutRelations, MongoDataSource, type MongoDataSourceInput$1 as MongoDataSourceInput, type MssqlConnectionInstance, type MssqlDataSourceInput, type MssqlPoolInstance, type MysqlConnectionInstance, type MysqlSqlDataSourceInput, type NotNullableMysqlSqlDataSourceInput, type NotNullableOracleDBDataSourceInput, type NotNullableOracleMssqlDataSourceInput, type NotNullablePostgresSqlDataSourceInput, type NotNullableSqliteDataSourceInput, type NumberModelKey, type OneOptions, type OracleDBDataSourceInput, type OracleDBPoolInstance, type PgPoolClientInstance, type PostgresSqlDataSourceInput, QueryBuilder, type RawModelOptions, RawNode, type RawQueryOptions, RedisCacheAdapter, type RedisFetchable, type RedisStorable, type RelatedInstance, type RelationQueryBuilderType, type ReplicationType, type ReturningColumns, type ReturningKey, Schema, SchemaBuilder, type SeederConfig, type SelectBrand, type SelectableColumn, type SelectedModel, type SlaveAlgorithm, type SlaveContext, type SqlCloneOptions, SqlDataSource, type SqlDataSourceInput, type SqlDataSourceModel, type SqlDataSourceType, type SqlDriverSpecificOptions, type SqlPoolType, type Sqlite3ConnectionOptions, type SqliteConnectionInstance, type SqliteDataSourceInput, type StartTransactionOptions, type SymmetricEncryptionOptions, type TableFormat, type ThroughModel, type TimestampFields, Transaction, type TransactionExecutionOptions, type TypedPropertyDecorator, type UlidFields, UlidMixin, type UniqueType, type UseCacheReturnType, type UseConnectionInput, type UuidFields, UuidMixin, WriteOperation, type WriteReturnType, belongsTo, bigIntMixin, column, createMixin, createModelFactory, defineMigrator, generateOpenApiModel, generateOpenApiModelSchema, generateOpenApiModelWithMetadata, getCollectionProperties, getIndexes, getModelColumns, type getPoolReturnType, getPrimaryKey, getRelations, getRelationsMetadata, getUniques, hasMany, hasOne, incrementMixin, index, HysteriaLogger as logger, manyToMany, property, RedisDataSource as redis, timestampMixin, ulidMixin, unique, uuidMixin, view, withPerformance };
|
|
8174
|
+
export { type AbstractConstructor, type AdminJsActionOptions, type AdminJsAssets, type AdminJsBranding, type AdminJsInstance, type AdminJsLocale, type AdminJsOptions, type AdminJsPage, type AdminJsPropertyOptions, type AdminJsResourceOptions, type AdminJsSettings, type AnyConstructor, type AnyModelConstructor, type AsymmetricEncryptionOptions, type BaseModelMethodOptions, type BaseModelRelationType, BaseSeeder, type BigIntFields, type BuildSelectType, type BuildSingleSelectType, type CacheAdapter, type CacheKeys, type CheckType, ClientMigrator, Collection, type ColumnDataTypeOption, type ColumnDataTypeOptionSimple, type ColumnDataTypeOptionWithBinary, type ColumnDataTypeOptionWithDatePrecision, type ColumnDataTypeOptionWithEnum, type ColumnDataTypeOptionWithLength, type ColumnDataTypeOptionWithPrecision, type ColumnDataTypeOptionWithScaleAndPrecision, type ColumnDataTypeOptionWithText, type ColumnDef, type ColumnOptions, type ColumnType, type CommonDataSourceInput, type ComposeBuildSelect, type ComposeSelect, type ConnectionPolicies, type Constructor, type CustomLogger, type DataSourceInput, type DataSourceType, type DateColumnOptions, type DatetimeColumnOptions, type DefinedModel, type ExcludeMethods, type ExtractColumnName, type ExtractSourceColumn, type FetchHooks, type FindReturnType, type GetColumnType, type GetConnectionReturnType, HysteriaError, InMemoryAdapter, type IncrementFields, type IndexType, type LazyRelationType, type LoggerConfig, type ManyOptions, type ManyToManyOptions, type ManyToManyStringOptions, Migration, type MigrationConfig, type MigrationConfigBase, type MixinColumns, MixinFactory, Model, type ModelDataProperties, type ModelInstanceType, type ModelKey, ModelQueryBuilder, type ModelQueryResult, type ModelRelation, type ModelSelectTuple, type ModelSelectableInput, type ModelWithoutRelations, MongoDataSource, type MongoDataSourceInput$1 as MongoDataSourceInput, type MssqlConnectionInstance, type MssqlDataSourceInput, type MssqlPoolInstance, type MysqlConnectionInstance, type MysqlSqlDataSourceInput, type NotNullableMysqlSqlDataSourceInput, type NotNullableOracleDBDataSourceInput, type NotNullableOracleMssqlDataSourceInput, type NotNullablePostgresSqlDataSourceInput, type NotNullableSqliteDataSourceInput, type NumberModelKey, type OneOptions, type OracleDBDataSourceInput, type OracleDBPoolInstance, type PgPoolClientInstance, type PostgresSqlDataSourceInput, QueryBuilder, type RawModelOptions, RawNode, type RawQueryOptions, RedisCacheAdapter, type RedisFetchable, type RedisStorable, type RelatedInstance, type RelationDef, type RelationQueryBuilderType, type ReplicationType, type ReturningColumns, type ReturningKey, Schema, SchemaBuilder, type SeederConfig, type SelectBrand, type SelectableColumn, type SelectedModel, type SlaveAlgorithm, type SlaveContext, type SqlCloneOptions, SqlDataSource, type SqlDataSourceInput, type SqlDataSourceModel, type SqlDataSourceType, type SqlDriverSpecificOptions, type SqlPoolType, type Sqlite3ConnectionOptions, type SqliteConnectionInstance, type SqliteDataSourceInput, type StartTransactionOptions, type SymmetricEncryptionOptions, type TableFormat, type ThroughModel, type TimestampFields, Transaction, type TransactionExecutionOptions, type TypedPropertyDecorator, type UlidFields, UlidMixin, type UniqueType, type UseCacheReturnType, type UseConnectionInput, type UuidFields, UuidMixin, WriteOperation, type WriteReturnType, belongsTo, bigIntMixin, check, col, column, createMixin, createModelFactory, defineMigrator, defineModel, generateOpenApiModel, generateOpenApiModelSchema, generateOpenApiModelWithMetadata, getChecks, getCollectionProperties, getIndexes, getModelColumns, type getPoolReturnType, getPrimaryKey, getRelations, getRelationsMetadata, getUniques, hasMany, hasOne, incrementMixin, index, HysteriaLogger as logger, manyToMany, property, RedisDataSource as redis, rel, timestampMixin, ulidMixin, unique, uuidMixin, view, withPerformance };
|