orange-orm 3.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +1 -0
- package/.eslintignore +2 -0
- package/.eslintrc.js +45 -0
- package/.gitattributes +3 -0
- package/CNAME +1 -0
- package/CONTRIBUTING.md +43 -0
- package/LICENSE +7 -0
- package/README.md +1969 -0
- package/SECURITY.md +12 -0
- package/bin/build.js +127 -0
- package/bin/compile.js +26 -0
- package/bin/rdb.js +4 -0
- package/docs/CODE_OF_CONDUCT.md +18 -0
- package/docs/changelog.md +461 -0
- package/docs/docs.md +2373 -0
- package/docs/orange.svg +32 -0
- package/docs/relations.png +0 -0
- package/package.json +139 -0
- package/src/applyPatch.js +105 -0
- package/src/client/axiosInterceptor.js +46 -0
- package/src/client/clientMap.js +72 -0
- package/src/client/createPatch.js +122 -0
- package/src/client/createProviders.js +121 -0
- package/src/client/index.js +997 -0
- package/src/client/index.mjs +6295 -0
- package/src/client/map.js +110 -0
- package/src/client/merge.js +9 -0
- package/src/client/netAdapter.js +133 -0
- package/src/client/rollup.config.js +12 -0
- package/src/client/self.js +4 -0
- package/src/client/stringify.js +22 -0
- package/src/client/toKeyPositionMap.js +30 -0
- package/src/clsTest.js +79 -0
- package/src/createDomain/negotiateForwardProperty.js +23 -0
- package/src/createDomain.js +31 -0
- package/src/dateToISOString.js +25 -0
- package/src/emitEvent.js +46 -0
- package/src/emptyFilter.js +35 -0
- package/src/flags.js +6 -0
- package/src/fromCompareObject.js +24 -0
- package/src/generic-pool.js +641 -0
- package/src/getManyDto/newQuery.js +18 -0
- package/src/getManyDto/query/newColumnSql.js +8 -0
- package/src/getManyDto/query/newSingleQuery.js +19 -0
- package/src/getManyDto/query/singleQuery/newJoinedColumnSql.js +25 -0
- package/src/getManyDto/query/singleQuery/newShallowColumnSql.js +25 -0
- package/src/getManyDto.js +255 -0
- package/src/getTSDefinition.js +510 -0
- package/src/hostExpress/executePath.js +433 -0
- package/src/hostExpress/getMeta.js +49 -0
- package/src/hostExpress.js +125 -0
- package/src/hostLocal.js +110 -0
- package/src/index.d.ts +324 -0
- package/src/index.js +116 -0
- package/src/jsconfig.json +8 -0
- package/src/lock/toIntKey.js +35 -0
- package/src/lock.js +26 -0
- package/src/map.d.ts +1729 -0
- package/src/mssql/encodeBuffer.js +7 -0
- package/src/mssql/newDatabase.js +129 -0
- package/src/mssql/newPool.js +19 -0
- package/src/mssql/newTransaction.js +69 -0
- package/src/mssql/pool/defaults.js +45 -0
- package/src/mssql/pool/end.js +13 -0
- package/src/mssql/pool/newGenericPool.js +62 -0
- package/src/mssql/wrapQuery.js +34 -0
- package/src/mySql/deleteFromSql.js +8 -0
- package/src/mySql/encodeBoolean.js +7 -0
- package/src/mySql/insert.js +21 -0
- package/src/mySql/insertSql.js +62 -0
- package/src/mySql/lastInsertedSql.js +11 -0
- package/src/mySql/limitAndOffset.js +18 -0
- package/src/mySql/newDatabase.js +127 -0
- package/src/mySql/newPool.js +19 -0
- package/src/mySql/newTransaction.js +54 -0
- package/src/mySql/pool/defaults.js +16 -0
- package/src/mySql/pool/end.js +13 -0
- package/src/mySql/pool/negotiatePoolOptions.js +12 -0
- package/src/mySql/pool/newGenericPool.js +67 -0
- package/src/mySql/selectForUpdateSql.js +3 -0
- package/src/mySql/wrapQuery.js +16 -0
- package/src/mySql/wrapQueryStream.js +9 -0
- package/src/newArray.js +3 -0
- package/src/newCollection.js +55 -0
- package/src/newId.js +1 -0
- package/src/newImmutable.js +22 -0
- package/src/newObject.js +5 -0
- package/src/oracle/deleteFromSql.js +8 -0
- package/src/oracle/encodeBoolean.js +7 -0
- package/src/oracle/encodeBuffer.js +7 -0
- package/src/oracle/encodeDate.js +7 -0
- package/src/oracle/formatDateIn.js +5 -0
- package/src/oracle/formatDateOut.js +5 -0
- package/src/oracle/insert.js +23 -0
- package/src/oracle/insertSql.js +73 -0
- package/src/oracle/lastInsertedSql.js +14 -0
- package/src/oracle/limitAndOffset.js +18 -0
- package/src/oracle/mergeSql.js +79 -0
- package/src/oracle/newDatabase.js +128 -0
- package/src/oracle/newInsertCommandCore.js +27 -0
- package/src/oracle/newPool.js +19 -0
- package/src/oracle/newTransaction.js +63 -0
- package/src/oracle/outputInsertedSql.js +5 -0
- package/src/oracle/pool/defaults.js +45 -0
- package/src/oracle/pool/end.js +13 -0
- package/src/oracle/pool/newGenericPool.js +64 -0
- package/src/oracle/replaceParamChar.js +14 -0
- package/src/oracle/selectForUpdateSql.js +3 -0
- package/src/oracle/wrapQuery.js +38 -0
- package/src/patchRow.js +13 -0
- package/src/patchTable.js +317 -0
- package/src/pg/deleteFromSql.js +8 -0
- package/src/pg/encodeBoolean.js +5 -0
- package/src/pg/encodeDate.js +7 -0
- package/src/pg/encodeJSON.js +15 -0
- package/src/pg/formatDateOut.js +5 -0
- package/src/pg/insert.js +14 -0
- package/src/pg/insertSql.js +70 -0
- package/src/pg/lastInsertedSql.js +11 -0
- package/src/pg/limitAndOffset.js +18 -0
- package/src/pg/newDatabase.js +153 -0
- package/src/pg/newPool.js +19 -0
- package/src/pg/newStreamableQuery.js +7 -0
- package/src/pg/newTransaction.js +58 -0
- package/src/pg/pool/defaults.js +45 -0
- package/src/pg/pool/end.js +13 -0
- package/src/pg/pool/newPgPool.js +82 -0
- package/src/pg/replaceParamChar.js +14 -0
- package/src/pg/schema.js +11 -0
- package/src/pg/selectForUpdateSql.js +3 -0
- package/src/pg/wrapQuery.js +33 -0
- package/src/pg/wrapQueryStream.js +20 -0
- package/src/pools.js +17 -0
- package/src/query/negotiateParameters.js +10 -0
- package/src/query/negotiateSql.js +14 -0
- package/src/query/wrapQuery.js +17 -0
- package/src/query.js +13 -0
- package/src/sap/deleteFromSql.js +8 -0
- package/src/sap/encodeBoolean.js +7 -0
- package/src/sap/encodeBuffer.js +7 -0
- package/src/sap/formatDateOut.js +5 -0
- package/src/sap/insert.js +21 -0
- package/src/sap/insertSql.js +64 -0
- package/src/sap/lastInsertedSql.js +12 -0
- package/src/sap/limitAndOffset.js +16 -0
- package/src/sap/mergeSql.js +73 -0
- package/src/sap/newDatabase.js +129 -0
- package/src/sap/newPool.js +19 -0
- package/src/sap/newTransaction.js +69 -0
- package/src/sap/pool/end.js +13 -0
- package/src/sap/selectForUpdateSql.js +3 -0
- package/src/sqlite/deleteFromSql.js +8 -0
- package/src/sqlite/encodeBoolean.js +7 -0
- package/src/sqlite/encodeBuffer.js +7 -0
- package/src/sqlite/insert.js +21 -0
- package/src/sqlite/insertSql.js +64 -0
- package/src/sqlite/lastInsertedSql.js +12 -0
- package/src/sqlite/limitAndOffset.js +18 -0
- package/src/sqlite/newDatabase.js +128 -0
- package/src/sqlite/newPool.js +19 -0
- package/src/sqlite/newTransaction.js +58 -0
- package/src/sqlite/pool/defaults.js +45 -0
- package/src/sqlite/pool/end.js +13 -0
- package/src/sqlite/pool/newGenericPool.js +59 -0
- package/src/sqlite/selectForUpdateSql.js +3 -0
- package/src/sqlite/wrapQuery.js +24 -0
- package/src/table/aggregate.js +9 -0
- package/src/table/begin.js +10 -0
- package/src/table/cascadeDelete.js +11 -0
- package/src/table/cloneStrategy.js +18 -0
- package/src/table/column/binary/newDecode.js +15 -0
- package/src/table/column/binary/newEncode.js +23 -0
- package/src/table/column/binary/purify.js +12 -0
- package/src/table/column/binary.js +12 -0
- package/src/table/column/boolean/newDecode.js +12 -0
- package/src/table/column/boolean/newEncode.js +36 -0
- package/src/table/column/boolean/purify.js +7 -0
- package/src/table/column/boolean.js +14 -0
- package/src/table/column/date/formatOut.js +11 -0
- package/src/table/column/date/newDecode.js +17 -0
- package/src/table/column/date/newEncode.js +47 -0
- package/src/table/column/date/purify.js +17 -0
- package/src/table/column/date/toISOString.js +25 -0
- package/src/table/column/date/tryParseISO.js +14 -0
- package/src/table/column/date.js +14 -0
- package/src/table/column/dateWithTimeZone/newEncode.js +41 -0
- package/src/table/column/dateWithTimeZone.js +14 -0
- package/src/table/column/encodeFilterArg.js +8 -0
- package/src/table/column/equal.js +15 -0
- package/src/table/column/extractAlias.js +7 -0
- package/src/table/column/greaterThan.js +12 -0
- package/src/table/column/greaterThanOrEqual.js +12 -0
- package/src/table/column/guid/newDecode.js +10 -0
- package/src/table/column/guid/newEncode.js +30 -0
- package/src/table/column/guid/purify.js +10 -0
- package/src/table/column/guid.js +12 -0
- package/src/table/column/in.js +24 -0
- package/src/table/column/json/formatOut.js +11 -0
- package/src/table/column/json/newDecode.js +21 -0
- package/src/table/column/json/newEncode.js +41 -0
- package/src/table/column/json/purify.js +7 -0
- package/src/table/column/json.js +22 -0
- package/src/table/column/lessThan.js +12 -0
- package/src/table/column/lessThanOrEqual.js +12 -0
- package/src/table/column/negotiateNextAndFilter.js +7 -0
- package/src/table/column/negotiateNextOrFilter.js +7 -0
- package/src/table/column/negotiateRawSqlFilter.js +74 -0
- package/src/table/column/newBoolean.js +54 -0
- package/src/table/column/newColumn.js +89 -0
- package/src/table/column/newDecodeCore.js +10 -0
- package/src/table/column/notEqual.js +15 -0
- package/src/table/column/numeric/negotiateDefault.js +5 -0
- package/src/table/column/numeric/newDecode.js +16 -0
- package/src/table/column/numeric/newEncode.js +25 -0
- package/src/table/column/numeric/purify.js +12 -0
- package/src/table/column/numeric.js +15 -0
- package/src/table/column/string/contains.js +3 -0
- package/src/table/column/string/containsCore.js +16 -0
- package/src/table/column/string/endsWith.js +3 -0
- package/src/table/column/string/endsWithCore.js +16 -0
- package/src/table/column/string/iContains.js +3 -0
- package/src/table/column/string/iEndsWith.js +3 -0
- package/src/table/column/string/iEqual.js +15 -0
- package/src/table/column/string/iStartsWith.js +3 -0
- package/src/table/column/string/newEncode.js +31 -0
- package/src/table/column/string/purify.js +7 -0
- package/src/table/column/string/startsWith.js +3 -0
- package/src/table/column/string/startsWithCore.js +16 -0
- package/src/table/column/string.js +55 -0
- package/src/table/column.js +154 -0
- package/src/table/commands/beginCommand.js +13 -0
- package/src/table/commands/commitCommand.js +9 -0
- package/src/table/commands/compressChanges.js +25 -0
- package/src/table/commands/delete/createAlias.js +6 -0
- package/src/table/commands/delete/newSingleCommand.js +17 -0
- package/src/table/commands/delete/singleCommand/joinSql.js +26 -0
- package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +19 -0
- package/src/table/commands/delete/singleCommand/selectSql.js +11 -0
- package/src/table/commands/delete/singleCommand/subFilter.js +19 -0
- package/src/table/commands/delete/singleCommand/whereSql.js +25 -0
- package/src/table/commands/getChangeSet.js +6 -0
- package/src/table/commands/insert/getSqlTemplate.js +68 -0
- package/src/table/commands/lastCommandMatches.js +11 -0
- package/src/table/commands/negotiateEndEdit.js +7 -0
- package/src/table/commands/newDeleteCommand.js +23 -0
- package/src/table/commands/newGetLastInsertedCommand.js +49 -0
- package/src/table/commands/newGetLastInsertedCommandCore.js +42 -0
- package/src/table/commands/newInsertAndForgetCommand.js +55 -0
- package/src/table/commands/newInsertCommand.js +56 -0
- package/src/table/commands/newInsertCommandCore.js +27 -0
- package/src/table/commands/newRow.js +51 -0
- package/src/table/commands/newUpdateCommand.js +62 -0
- package/src/table/commands/newUpdateCommandCore.js +45 -0
- package/src/table/commands/pushCommand.js +10 -0
- package/src/table/commands/rollbackCommand.js +13 -0
- package/src/table/commit.js +30 -0
- package/src/table/count.js +29 -0
- package/src/table/createJSONReadStream.js +7 -0
- package/src/table/createJSONReadStreamDefault.js +33 -0
- package/src/table/createJSONReadStreamNative.js +31 -0
- package/src/table/createReadStream.js +24 -0
- package/src/table/createReadStreamCoreNative.js +40 -0
- package/src/table/createReadStreamDefault.js +102 -0
- package/src/table/createReadStreamNative.js +17 -0
- package/src/table/delete.js +20 -0
- package/src/table/deleteSessionContext.js +17 -0
- package/src/table/encodeDbSpecific.js +10 -0
- package/src/table/executeQueries/executeChanges.js +35 -0
- package/src/table/executeQueries/executeQueriesCore.js +12 -0
- package/src/table/executeQueries/executeQuery.js +8 -0
- package/src/table/executeQueries/resolveExecuteQuery.js +57 -0
- package/src/table/executeQueries.js +15 -0
- package/src/table/extractDeleteStrategy.js +9 -0
- package/src/table/fuzzyPromise.js +18 -0
- package/src/table/getById.js +33 -0
- package/src/table/getFirstFromDb.js +10 -0
- package/src/table/getFromDbById.js +17 -0
- package/src/table/getIdArgs.js +14 -0
- package/src/table/getMany.js +26 -0
- package/src/table/getManyDto/newQuery.js +32 -0
- package/src/table/getManyDto/pg/newQuery.js +8 -0
- package/src/table/getManyDto.js +10 -0
- package/src/table/getManyDtoFast/getSubRows.js +172 -0
- package/src/table/getManyDtoFast/newQuery.js +8 -0
- package/src/table/getManyDtoFast/newQueryCore.js +18 -0
- package/src/table/getManyDtoFast/query/newSingleQuery.js +20 -0
- package/src/table/getManyDtoFast/query/newSubQueries/joinLegToQuery.js +18 -0
- package/src/table/getManyDtoFast/query/newSubQueries/manyLegToQuery.js +20 -0
- package/src/table/getManyDtoFast/query/newSubQueries/oneLegToQuery.js +21 -0
- package/src/table/getManyDtoFast/query/newSubQueries.js +47 -0
- package/src/table/getManyDtoFast/query/singleQuery/newShallowColumnSql.js +21 -0
- package/src/table/getSessionContext.js +10 -0
- package/src/table/getSessionSingleton.js +5 -0
- package/src/table/groupBy/newQuery.js +25 -0
- package/src/table/groupBy.js +65 -0
- package/src/table/hasMany.js +33 -0
- package/src/table/hasOne.js +33 -0
- package/src/table/insert.js +91 -0
- package/src/table/insertDefault.js +88 -0
- package/src/table/join.js +42 -0
- package/src/table/joinRelation/getRelatives.js +64 -0
- package/src/table/log.js +39 -0
- package/src/table/negotiateAddStrategy.js +20 -0
- package/src/table/negotiateExpandInverse.js +13 -0
- package/src/table/newCache.js +96 -0
- package/src/table/newCascadeDeleteStrategy.js +30 -0
- package/src/table/newGetRelated.js +21 -0
- package/src/table/newJoinRelation.js +117 -0
- package/src/table/newManyRelation.js +61 -0
- package/src/table/newOneRelation.js +61 -0
- package/src/table/newPrimaryKeyFilter.js +13 -0
- package/src/table/newQuery.js +18 -0
- package/src/table/newRelatedTable.js +100 -0
- package/src/table/newRowCache.js +106 -0
- package/src/table/newThrow.js +11 -0
- package/src/table/nullPromise.js +1 -0
- package/src/table/objectToCallback.js +7 -0
- package/src/table/oneRelation/getRelatives.js +45 -0
- package/src/table/popChanges.js +19 -0
- package/src/table/promise.js +14 -0
- package/src/table/purifyStrategy.js +49 -0
- package/src/table/query/extractFilter.js +9 -0
- package/src/table/query/extractLimit.js +11 -0
- package/src/table/query/extractLimitQuery.js +23 -0
- package/src/table/query/extractOffset.js +11 -0
- package/src/table/query/extractOrderBy.js +57 -0
- package/src/table/query/extractSql.js +10 -0
- package/src/table/query/newParameterized.js +38 -0
- package/src/table/query/newSingleQuery.js +23 -0
- package/src/table/query/parameterized/extractParameters.js +8 -0
- package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +16 -0
- package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +27 -0
- package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +37 -0
- package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +13 -0
- package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +9 -0
- package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +11 -0
- package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +9 -0
- package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +25 -0
- package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +13 -0
- package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +10 -0
- package/src/table/query/singleQuery/negotiateExclusive.js +11 -0
- package/src/table/query/singleQuery/negotiateLimit.js +10 -0
- package/src/table/query/singleQuery/newColumnSql.js +8 -0
- package/src/table/query/singleQuery/newDiscriminatorSql.js +33 -0
- package/src/table/query/singleQuery/newJoinSql.js +41 -0
- package/src/table/query/singleQuery/newQueryContext.js +20 -0
- package/src/table/query/singleQuery/newWhereSql.js +19 -0
- package/src/table/readStream/extractLimit.js +7 -0
- package/src/table/readStream/extractOrderBy.js +55 -0
- package/src/table/readStream/mySql/newQuery.js +16 -0
- package/src/table/readStream/mySql/query/newSingleQuery.js +21 -0
- package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +19 -0
- package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +22 -0
- package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +9 -0
- package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +18 -0
- package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +22 -0
- package/src/table/readStream/mySql/query/newSubQueries.js +47 -0
- package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +17 -0
- package/src/table/readStream/newQuery.js +32 -0
- package/src/table/readStream/newQueryStream.js +8 -0
- package/src/table/readStream/pg/newQuery.js +8 -0
- package/src/table/readStream/pg/newQueryCore.js +17 -0
- package/src/table/readStream/pg/query/newSingleQuery.js +19 -0
- package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +19 -0
- package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +22 -0
- package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +19 -0
- package/src/table/readStream/pg/query/newSubQueries.js +47 -0
- package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +19 -0
- package/src/table/readStreamDefault/createBatchFilter.js +39 -0
- package/src/table/relatedTable/aggregate/aggregateJoinSql.js +37 -0
- package/src/table/relatedTable/aggregate/joinSql.js +38 -0
- package/src/table/relatedTable/aggregate.js +48 -0
- package/src/table/relatedTable/all.js +24 -0
- package/src/table/relatedTable/any.js +70 -0
- package/src/table/relatedTable/childColumn.js +61 -0
- package/src/table/relatedTable/columnAggregate.js +16 -0
- package/src/table/relatedTable/columnAggregateGroup.js +59 -0
- package/src/table/relatedTable/joinSql.js +40 -0
- package/src/table/relatedTable/joinSqlArray.js +32 -0
- package/src/table/relatedTable/none.js +22 -0
- package/src/table/relatedTable/relatedColumn.js +49 -0
- package/src/table/relatedTable/relationFilter.js +16 -0
- package/src/table/relatedTable/selectSql.js +11 -0
- package/src/table/relatedTable/subFilter.js +16 -0
- package/src/table/relatedTable/where.js +50 -0
- package/src/table/relatedTable/whereSql.js +41 -0
- package/src/table/relation/manyCache/extractParentKey.js +17 -0
- package/src/table/relation/manyCache/synchronizeAdded.js +13 -0
- package/src/table/relation/manyCache/synchronizeChanged.js +31 -0
- package/src/table/relation/manyCache/synchronizeRemoved.js +13 -0
- package/src/table/relation/newExpanderCache.js +7 -0
- package/src/table/relation/newForeignKeyFilter.js +20 -0
- package/src/table/relation/newJoinLeg.js +23 -0
- package/src/table/relation/newManyCache.js +57 -0
- package/src/table/relation/newManyCacheCore.js +53 -0
- package/src/table/relation/newManyLeg.js +15 -0
- package/src/table/relation/newOneCache.js +28 -0
- package/src/table/relation/newOneLeg.js +25 -0
- package/src/table/releaseDbClient.js +15 -0
- package/src/table/resultToPromise.js +8 -0
- package/src/table/resultToRows/dbRowToRow.js +51 -0
- package/src/table/resultToRows/dbRowsToRows.js +13 -0
- package/src/table/resultToRows/decodeDbRow.js +25 -0
- package/src/table/resultToRows/delete/removeFromCache.js +33 -0
- package/src/table/resultToRows/delete.js +31 -0
- package/src/table/resultToRows/negotiateQueryContext.js +6 -0
- package/src/table/resultToRows/newDecodeDbRow.js +262 -0
- package/src/table/resultToRows/toDto/createDto.js +20 -0
- package/src/table/resultToRows/toDto/extractStrategy.js +41 -0
- package/src/table/resultToRows/toDto.js +92 -0
- package/src/table/resultToRows.js +37 -0
- package/src/table/rollback.js +31 -0
- package/src/table/rowArray/negotiateNextTick.js +11 -0
- package/src/table/rowArray/orderBy.js +51 -0
- package/src/table/rowArray.js +62 -0
- package/src/table/setSessionSingleton.js +5 -0
- package/src/table/strategyToSpan.js +49 -0
- package/src/table/tryGetById.js +13 -0
- package/src/table/tryGetFirstFromDb.js +23 -0
- package/src/table/tryGetFromCacheById.js +12 -0
- package/src/table/tryGetFromDbById/extractStrategy.js +9 -0
- package/src/table/tryGetFromDbById.js +19 -0
- package/src/table/tryGetSessionContext.js +16 -0
- package/src/table/tryReleaseDbClient.js +14 -0
- package/src/table/updateField.js +12 -0
- package/src/table/where.js +12 -0
- package/src/table.js +174 -0
- package/src/tedious/deleteFromSql.js +8 -0
- package/src/tedious/encodeBoolean.js +7 -0
- package/src/tedious/encodeBuffer.js +7 -0
- package/src/tedious/formatDateOut.js +5 -0
- package/src/tedious/formatJSONOut.js +5 -0
- package/src/tedious/getManyDto/newQuery.js +8 -0
- package/src/tedious/getManyDto/newQueryCore.js +18 -0
- package/src/tedious/getManyDto/query/newSingleQuery.js +29 -0
- package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +16 -0
- package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +16 -0
- package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +19 -0
- package/src/tedious/getManyDto/query/newSubQueries.js +48 -0
- package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +34 -0
- package/src/tedious/getManyDto.js +27 -0
- package/src/tedious/insert.js +13 -0
- package/src/tedious/insertSql.js +70 -0
- package/src/tedious/limitAndOffset.js +16 -0
- package/src/tedious/mergeSql.js +76 -0
- package/src/tedious/newDatabase.js +129 -0
- package/src/tedious/newPool.js +19 -0
- package/src/tedious/newTransaction.js +72 -0
- package/src/tedious/outputInsertedSql.js +11 -0
- package/src/tedious/pool/defaults.js +45 -0
- package/src/tedious/pool/end.js +13 -0
- package/src/tedious/pool/newGenericPool.js +71 -0
- package/src/tedious/pool/parseConnectionString.js +40 -0
- package/src/tedious/selectForUpdateSql.js +3 -0
- package/src/tedious/wrapQuery.js +112 -0
- package/src/toCompareObject.js +41 -0
- package/src/useHook.js +9 -0
- package/src/validateDeleteAllowed.js +49 -0
- package/src/validateDeleteConflict.js +92 -0
package/src/map.d.ts
ADDED
|
@@ -0,0 +1,1729 @@
|
|
|
1
|
+
import type { Options } from 'ajv';
|
|
2
|
+
import type { ConnectionConfiguration } from 'tedious';
|
|
3
|
+
import type { PoolAttributes } from 'oracledb';
|
|
4
|
+
import type { AxiosInterceptorManager, InternalAxiosRequestConfig, AxiosResponse } from 'axios';
|
|
5
|
+
|
|
6
|
+
export type MappedDbDef<T> = {
|
|
7
|
+
map<V extends AllowedDbMap<V>>(
|
|
8
|
+
callback: (mapper: DbMapper<T>) => V
|
|
9
|
+
): MappedDbDef<MergeProperties<T, V>>;
|
|
10
|
+
<O extends DbOptions<T>>(concurrency: O): NegotiateDbInstance<T, O>;
|
|
11
|
+
} & T & DbConnectable<T>;
|
|
12
|
+
|
|
13
|
+
type MergeProperties<T, V> = {
|
|
14
|
+
[K in keyof T | keyof V]:
|
|
15
|
+
K extends keyof T ? (T[K] extends MappedTableDef<infer M>
|
|
16
|
+
? (K extends keyof V ? (V[K] extends MappedTableDef<infer N> ? MappedTableDef<M & N> : V[K]) : T[K])
|
|
17
|
+
: T[K])
|
|
18
|
+
: (K extends keyof V ? V[K] : never);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export type DbMapper<T> = {
|
|
23
|
+
table(tableName: string): MappedTableDefInit<{}>;
|
|
24
|
+
} & T;
|
|
25
|
+
|
|
26
|
+
type MappedDb<T> = {
|
|
27
|
+
<O extends DbOptions<T>>(concurrency: O): NegotiateDbInstance<T, O>;
|
|
28
|
+
} & DbConnectable<T>;
|
|
29
|
+
|
|
30
|
+
type DbConnectable<T> = {
|
|
31
|
+
http(url: string): MappedDbInstance<T>;
|
|
32
|
+
postgres(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
|
|
33
|
+
sqlite(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
|
|
34
|
+
sap(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
|
|
35
|
+
mssql(connectionConfig: ConnectionConfiguration, options?: PoolOptions): MappedDbInstance<T>;
|
|
36
|
+
mssql(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
|
|
37
|
+
mssqlNative(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
|
|
38
|
+
mysql(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
|
|
39
|
+
oracle(config: PoolAttributes, options?: PoolOptions): MappedDbInstance<T>;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
type NegotiateDbInstance<T, C> = C extends WithDb
|
|
43
|
+
? MappedDbInstance<T>
|
|
44
|
+
: MappedDb<T>;
|
|
45
|
+
|
|
46
|
+
type WithDb = {
|
|
47
|
+
db: Pool | ((connectors: Connectors) => Pool | Promise<Pool>)
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
type DbOptions<T> = {
|
|
51
|
+
[K in keyof T]?: T[K] extends MappedTableDef<infer U>
|
|
52
|
+
? Concurrency<U>
|
|
53
|
+
: never;
|
|
54
|
+
} & {
|
|
55
|
+
concurrency?: ConcurrencyValues;
|
|
56
|
+
readonly?: boolean;
|
|
57
|
+
db?: Pool | ((connectors: Connectors) => Pool | Promise<Pool>);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
interface Connectors {
|
|
61
|
+
http(url: string): Pool;
|
|
62
|
+
postgres(connectionString: string, options?: PoolOptions): Pool;
|
|
63
|
+
sqlite(connectionString: string, options?: PoolOptions): Pool;
|
|
64
|
+
sap(connectionString: string, options?: PoolOptions): Pool;
|
|
65
|
+
mssql(connectionConfig: ConnectionConfiguration, options?: PoolOptions): Pool;
|
|
66
|
+
mssql(connectionString: string, options?: PoolOptions): Pool;
|
|
67
|
+
oracle(config: PoolAttributes, options?: PoolOptions): Pool;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface Pool {
|
|
71
|
+
end(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface PoolOptions {
|
|
75
|
+
size?: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
type MappedDbInstance<T> = {
|
|
79
|
+
[K in keyof T]: T[K] extends MappedTableDef<infer U>
|
|
80
|
+
? MappedTable<T[K]>
|
|
81
|
+
: never;
|
|
82
|
+
} & {
|
|
83
|
+
filter: Filter;
|
|
84
|
+
and(filter: Filter | RawFilter[], ...filters: RawFilter[]): Filter;
|
|
85
|
+
or(filter: Filter | RawFilter[], ...filters: RawFilter[]): Filter;
|
|
86
|
+
not(): Filter;
|
|
87
|
+
query(filter: RawFilter | string): Promise<unknown[]>;
|
|
88
|
+
query<T>(filter: RawFilter | string): Promise<T[]>;
|
|
89
|
+
createPatch(original: any[], modified: any[]): JsonPatch;
|
|
90
|
+
createPatch(original: any, modified: any): JsonPatch;
|
|
91
|
+
<O extends DbOptions<T>>(concurrency: O): MappedDbInstance<T>;
|
|
92
|
+
transaction(
|
|
93
|
+
fn: (db: MappedDbInstance<T>) => Promise<unknown>
|
|
94
|
+
): Promise<void>;
|
|
95
|
+
saveChanges(arraysOrRow: { saveChanges(): Promise<void> }): Promise<void>;
|
|
96
|
+
express(): import('express').RequestHandler;
|
|
97
|
+
express(config: ExpressConfig<T>): import('express').RequestHandler;
|
|
98
|
+
readonly metaData: DbConcurrency<T>;
|
|
99
|
+
interceptors: WithInterceptors;
|
|
100
|
+
} & DbConnectable<T> & WithInterceptors;
|
|
101
|
+
|
|
102
|
+
interface WithInterceptors {
|
|
103
|
+
request: AxiosInterceptorManager<InternalAxiosRequestConfig>;
|
|
104
|
+
response: AxiosInterceptorManager<AxiosResponse>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
type ExpressConfig<T> = {
|
|
109
|
+
[K in keyof T]?: T[K] extends MappedTableDef<infer U>
|
|
110
|
+
? ExpressTableConfig<T>
|
|
111
|
+
: never;
|
|
112
|
+
} & {
|
|
113
|
+
db?: Pool | ((connectors: Connectors) => Pool | Promise<Pool>);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
type ExpressTableConfig<T> = {
|
|
117
|
+
baseFilter?: RawFilter | ((db: MappedDbInstance<T>, req: import('express').Request, res: import('express').Response) => RawFilter);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
type JsonPatch = Array<{
|
|
122
|
+
op: 'add' | 'remove' | 'replace' | 'copy' | 'move' | 'test';
|
|
123
|
+
path: string;
|
|
124
|
+
value?: any;
|
|
125
|
+
from?: string;
|
|
126
|
+
}>;
|
|
127
|
+
|
|
128
|
+
type ToJsonType<M> = M extends JsonOf<infer N> ? N : JsonType;
|
|
129
|
+
|
|
130
|
+
type PrimaryRowFilter<T> = StrategyToRowDataPrimary<ExtractPrimary<T>>;
|
|
131
|
+
type StrategyToRowDataPrimary<T> = {
|
|
132
|
+
[K in keyof T]: T[K] extends StringColumnSymbol
|
|
133
|
+
? string
|
|
134
|
+
: T[K] extends UuidColumnSymbol
|
|
135
|
+
? string
|
|
136
|
+
: T[K] extends NumericColumnSymbol
|
|
137
|
+
? number
|
|
138
|
+
: T[K] extends DateColumnSymbol
|
|
139
|
+
? string | Date
|
|
140
|
+
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
141
|
+
? string | Date
|
|
142
|
+
: T[K] extends BinaryColumnSymbol
|
|
143
|
+
? string
|
|
144
|
+
: T[K] extends BooleanColumnSymbol
|
|
145
|
+
? boolean
|
|
146
|
+
: T[K] extends JSONColumnType<infer M>
|
|
147
|
+
? ToJsonType<M>
|
|
148
|
+
: never;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
type ExpandedFetchingStrategy<T> = {
|
|
153
|
+
[K in keyof T &
|
|
154
|
+
keyof RemoveNever<
|
|
155
|
+
AllowedColumnsAndTablesStrategy<T>
|
|
156
|
+
>]?: T[K] extends ColumnSymbols
|
|
157
|
+
? true
|
|
158
|
+
: ExpandedFetchingStrategy<T[K]>;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
type ExpandedMappedTable<T, FL = ExpandedFetchingStrategy<T>> = {
|
|
162
|
+
getOne(
|
|
163
|
+
filter?: Filter | PrimaryRowFilter<T>
|
|
164
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
165
|
+
getOne<FS extends FetchingStrategy<T>>(
|
|
166
|
+
filter?: Filter | PrimaryRowFilter<T>,
|
|
167
|
+
fetchingStrategy?: FS
|
|
168
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
update(
|
|
172
|
+
row: StrategyToInsertRowData<T>
|
|
173
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
174
|
+
updateChanges(
|
|
175
|
+
row: StrategyToInsertRowData<T>,
|
|
176
|
+
originalRow: StrategyToInsertRowData<T>
|
|
177
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
178
|
+
|
|
179
|
+
update(
|
|
180
|
+
rows: StrategyToInsertRowData<T>[]
|
|
181
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
182
|
+
updateChanges(
|
|
183
|
+
rows: StrategyToInsertRowData<T>[],
|
|
184
|
+
originalRows: StrategyToInsertRowData<T>[]
|
|
185
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
186
|
+
|
|
187
|
+
update<FS extends FetchingStrategy<T>>(
|
|
188
|
+
row: StrategyToInsertRowData<T>,
|
|
189
|
+
strategy: FS
|
|
190
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
191
|
+
updateChanges<FS extends FetchingStrategy<T>>(
|
|
192
|
+
row: StrategyToInsertRowData<T>,
|
|
193
|
+
originalRow: StrategyToInsertRowData<T>,
|
|
194
|
+
strategy: FS
|
|
195
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
196
|
+
|
|
197
|
+
update<FS extends FetchingStrategy<T>>(
|
|
198
|
+
rows: StrategyToInsertRowData<T>[],
|
|
199
|
+
strategy: FS
|
|
200
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
201
|
+
updateChanges<FS extends FetchingStrategy<T>>(
|
|
202
|
+
rows: StrategyToInsertRowData<T>[],
|
|
203
|
+
originalRows: StrategyToInsertRowData<T>[],
|
|
204
|
+
strategy: FS
|
|
205
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
206
|
+
|
|
207
|
+
insert(
|
|
208
|
+
row: StrategyToInsertRowData<T>
|
|
209
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
210
|
+
|
|
211
|
+
insert(
|
|
212
|
+
rows: StrategyToInsertRowData<T>[]
|
|
213
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
214
|
+
|
|
215
|
+
insert<FS extends FetchingStrategy<T>>(
|
|
216
|
+
row: StrategyToInsertRowData<T>,
|
|
217
|
+
strategy: FS
|
|
218
|
+
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
219
|
+
|
|
220
|
+
insert<FS extends FetchingStrategy<T>>(
|
|
221
|
+
rows: StrategyToInsertRowData<T>[],
|
|
222
|
+
strategy: FS
|
|
223
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
224
|
+
|
|
225
|
+
insertAndForget(
|
|
226
|
+
row: StrategyToRowData<T>
|
|
227
|
+
): Promise<void>;
|
|
228
|
+
|
|
229
|
+
insertAndForget(
|
|
230
|
+
row: StrategyToRowData<T>[]
|
|
231
|
+
): Promise<void>;
|
|
232
|
+
|
|
233
|
+
getMany(
|
|
234
|
+
filter?: Filter | PrimaryRowFilter<T>[]
|
|
235
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
236
|
+
getMany<FS extends FetchingStrategy<T>>(
|
|
237
|
+
filter?: Filter | PrimaryRowFilter<T>[],
|
|
238
|
+
fetchingStrategy?: FS
|
|
239
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
240
|
+
getAll(): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
241
|
+
getAll<FS extends FetchingStrategy<T>>(
|
|
242
|
+
fetchingStrategy: FS
|
|
243
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
244
|
+
aggregate<FS extends AggregateStrategy<T>>(
|
|
245
|
+
fetchingStrategy: FS
|
|
246
|
+
): Promise<StrategyToRowData<FetchedAggregateProperties<T, FL>>[]>;
|
|
247
|
+
count(filter?: Filter | PrimaryRowFilter<T>[]): Promise<number>;
|
|
248
|
+
delete(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
249
|
+
deleteCascade(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
250
|
+
|
|
251
|
+
proxify(
|
|
252
|
+
row: StrategyToInsertRowData<T>
|
|
253
|
+
): StrategyToRow<FetchedProperties<T, FL>, T>;
|
|
254
|
+
|
|
255
|
+
proxify(
|
|
256
|
+
row: StrategyToInsertRowData<T>[]
|
|
257
|
+
): StrategyToRowArray<FetchedProperties<T, FL>, T>;
|
|
258
|
+
|
|
259
|
+
proxify<FS extends FetchingStrategy<T>>(
|
|
260
|
+
row: StrategyToInsertRowData<T>,
|
|
261
|
+
strategy: FS
|
|
262
|
+
): StrategyToRow<FetchedProperties<T, FL>, T>;
|
|
263
|
+
|
|
264
|
+
proxify<FS extends FetchingStrategy<T>>(
|
|
265
|
+
row: StrategyToInsertRowData<T>[],
|
|
266
|
+
strategy: FS
|
|
267
|
+
): StrategyToRowArray<FetchedProperties<T, FL>, T>;
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
patch<C extends Concurrency<T>>(
|
|
271
|
+
patch: JsonPatch,
|
|
272
|
+
concurrency?: C
|
|
273
|
+
): Promise<void>;
|
|
274
|
+
|
|
275
|
+
tsType<FS extends FetchingStrategy<T>>(
|
|
276
|
+
strategy: FS
|
|
277
|
+
): StrategyToRowData<FetchedProperties<T, FS>>;
|
|
278
|
+
tsType(
|
|
279
|
+
): StrategyToRowData<FetchedProperties<T, FL>>;
|
|
280
|
+
|
|
281
|
+
readonly metaData: Concurrency<T>;
|
|
282
|
+
} & MappedColumnsAndRelations<T> &
|
|
283
|
+
GetById<T, CountProperties<ExtractPrimary<T>>>;
|
|
284
|
+
|
|
285
|
+
type ReturnArrayOrObj<W, V1, V2> =
|
|
286
|
+
W extends any[] ? V2 :
|
|
287
|
+
V1;
|
|
288
|
+
|
|
289
|
+
type MappedTable<T> = {
|
|
290
|
+
expand(): ExpandedMappedTable<T>
|
|
291
|
+
getOne(
|
|
292
|
+
filter?: Filter | PrimaryRowFilter<T>
|
|
293
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
294
|
+
getOne<FS extends FetchingStrategy<T>>(
|
|
295
|
+
filter?: Filter | PrimaryRowFilter<T>,
|
|
296
|
+
fetchingStrategy?: FS
|
|
297
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
298
|
+
|
|
299
|
+
update(
|
|
300
|
+
row: StrategyToInsertRowData<T>
|
|
301
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
302
|
+
updateChanges(
|
|
303
|
+
modifiedRow: StrategyToInsertRowData<T>,
|
|
304
|
+
originalRow: StrategyToInsertRowData<T>
|
|
305
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
306
|
+
|
|
307
|
+
update(
|
|
308
|
+
rows: StrategyToInsertRowData<T>[]
|
|
309
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
310
|
+
updateChanges(
|
|
311
|
+
modifiedRows: StrategyToInsertRowData<T>[],
|
|
312
|
+
originalRows: StrategyToInsertRowData<T>[]
|
|
313
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
314
|
+
|
|
315
|
+
update<FS extends FetchingStrategy<T>>(
|
|
316
|
+
row: StrategyToInsertRowData<T>,
|
|
317
|
+
strategy: FS
|
|
318
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
319
|
+
updateChanges<FS extends FetchingStrategy<T>>(
|
|
320
|
+
modifiedRow: StrategyToInsertRowData<T>,
|
|
321
|
+
originalRow: StrategyToInsertRowData<T>,
|
|
322
|
+
strategy: FS
|
|
323
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
324
|
+
|
|
325
|
+
update<FS extends FetchingStrategy<T>>(
|
|
326
|
+
rows: StrategyToInsertRowData<T>[],
|
|
327
|
+
strategy: FS
|
|
328
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
329
|
+
updateChanges<FS extends FetchingStrategy<T>>(
|
|
330
|
+
modifiedRows: StrategyToInsertRowData<T>[],
|
|
331
|
+
originalRows: StrategyToInsertRowData<T>[],
|
|
332
|
+
strategy: FS
|
|
333
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
334
|
+
|
|
335
|
+
insert(
|
|
336
|
+
row: StrategyToInsertRowData<T>
|
|
337
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
338
|
+
|
|
339
|
+
insert(
|
|
340
|
+
rows: StrategyToInsertRowData<T>[]
|
|
341
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
342
|
+
|
|
343
|
+
insert<FS extends FetchingStrategy<T>>(
|
|
344
|
+
row: StrategyToInsertRowData<T>,
|
|
345
|
+
strategy: FS
|
|
346
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
347
|
+
|
|
348
|
+
insert<FS extends FetchingStrategy<T>>(
|
|
349
|
+
rows: StrategyToInsertRowData<T>[],
|
|
350
|
+
strategy: FS
|
|
351
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
352
|
+
|
|
353
|
+
insertAndForget<TRow extends StrategyToInsertRowData<T> | StrategyToInsertRowData<T>[]>(
|
|
354
|
+
row: TRow
|
|
355
|
+
): Promise<void>;
|
|
356
|
+
getMany(
|
|
357
|
+
filter?: Filter | PrimaryRowFilter<T>[]
|
|
358
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
359
|
+
getMany<FS extends FetchingStrategy<T>>(
|
|
360
|
+
filter?: Filter | PrimaryRowFilter<T>[],
|
|
361
|
+
fetchingStrategy?: FS
|
|
362
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
363
|
+
getAll(): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
364
|
+
getAll<FS extends FetchingStrategy<T>>(
|
|
365
|
+
fetchingStrategy: FS
|
|
366
|
+
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
367
|
+
|
|
368
|
+
aggregate<FS extends AggregateStrategy<T>>(
|
|
369
|
+
fetchingStrategy: FS
|
|
370
|
+
): Promise<StrategyToRowData<FetchedAggregateProperties<T, FS>>[]>;
|
|
371
|
+
|
|
372
|
+
count(filter?: Filter | PrimaryRowFilter<T>[]): Promise<number>;
|
|
373
|
+
delete(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
374
|
+
deleteCascade(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
375
|
+
|
|
376
|
+
proxify(
|
|
377
|
+
row: StrategyToInsertRowData<T>
|
|
378
|
+
): StrategyToRow<FetchedProperties<T, {}>, T>;
|
|
379
|
+
|
|
380
|
+
proxify(
|
|
381
|
+
row: StrategyToInsertRowData<T>[]
|
|
382
|
+
): StrategyToRowArray<FetchedProperties<T, {}>, T>;
|
|
383
|
+
|
|
384
|
+
proxify<FS extends FetchingStrategy<T>>(
|
|
385
|
+
row: StrategyToInsertRowData<T>,
|
|
386
|
+
strategy: FS
|
|
387
|
+
): StrategyToRow<FetchedProperties<T, FS>, T>;
|
|
388
|
+
|
|
389
|
+
proxify<FS extends FetchingStrategy<T>>(
|
|
390
|
+
row: StrategyToInsertRowData<T>[],
|
|
391
|
+
strategy: FS
|
|
392
|
+
): StrategyToRowArray<FetchedProperties<T, FS>, T>;
|
|
393
|
+
|
|
394
|
+
patch<C extends Concurrency<T>>(
|
|
395
|
+
patch: JsonPatch,
|
|
396
|
+
concurrency?: C
|
|
397
|
+
): Promise<void>;
|
|
398
|
+
|
|
399
|
+
tsType<FS extends FetchingStrategy<T>>(
|
|
400
|
+
strategy: FS
|
|
401
|
+
): StrategyToRowData<FetchedProperties<T, FS>>;
|
|
402
|
+
tsType(
|
|
403
|
+
): StrategyToRowData<FetchedProperties<T, {}>>;
|
|
404
|
+
|
|
405
|
+
readonly metaData: Concurrency<T>;
|
|
406
|
+
} & MappedColumnsAndRelations<T> &
|
|
407
|
+
GetById<T, CountProperties<ExtractPrimary<T>>>;
|
|
408
|
+
|
|
409
|
+
type GetById<T, Count extends number> = Count extends 1
|
|
410
|
+
? {
|
|
411
|
+
getById(
|
|
412
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>
|
|
413
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
414
|
+
getById<FS extends FetchingStrategy<T>>(
|
|
415
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
416
|
+
fetchingStrategy: FS
|
|
417
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
418
|
+
}
|
|
419
|
+
: Count extends 2
|
|
420
|
+
? {
|
|
421
|
+
getById(
|
|
422
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
423
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>
|
|
424
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
425
|
+
getById<FS extends FetchingStrategy<T>>(
|
|
426
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
427
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
428
|
+
fetchingStrategy: FS
|
|
429
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
430
|
+
}
|
|
431
|
+
: Count extends 3
|
|
432
|
+
? {
|
|
433
|
+
getById(
|
|
434
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
435
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
436
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>
|
|
437
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
438
|
+
getById<FS extends FetchingStrategy<T>>(
|
|
439
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
440
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
441
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
442
|
+
fetchingStrategy: FS
|
|
443
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
444
|
+
}
|
|
445
|
+
: Count extends 4
|
|
446
|
+
? {
|
|
447
|
+
getById(
|
|
448
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
449
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
450
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
451
|
+
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>
|
|
452
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
453
|
+
getById<FS extends FetchingStrategy<T>>(
|
|
454
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
455
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
456
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
457
|
+
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
458
|
+
fetchingStrategy: FS
|
|
459
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
460
|
+
}
|
|
461
|
+
: Count extends 5
|
|
462
|
+
? {
|
|
463
|
+
getById(
|
|
464
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
465
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
466
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
467
|
+
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
468
|
+
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>
|
|
469
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
470
|
+
getById<FS extends FetchingStrategy<T>>(
|
|
471
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
472
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
473
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
474
|
+
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
475
|
+
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>,
|
|
476
|
+
fetchingStrategy: FS
|
|
477
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
478
|
+
}
|
|
479
|
+
: Count extends 6
|
|
480
|
+
? {
|
|
481
|
+
getById(
|
|
482
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
483
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
484
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
485
|
+
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
486
|
+
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>,
|
|
487
|
+
id6: ColumnToType<PickPropertyValue6<PickTypesOf<T, IsPrimary>>>
|
|
488
|
+
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
489
|
+
getById<FS extends FetchingStrategy<T>>(
|
|
490
|
+
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
491
|
+
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
492
|
+
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
493
|
+
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
494
|
+
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>,
|
|
495
|
+
id6: ColumnToType<PickPropertyValue6<PickTypesOf<T, IsPrimary>>>,
|
|
496
|
+
fetchingStrategy: FS
|
|
497
|
+
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
498
|
+
}
|
|
499
|
+
: never;
|
|
500
|
+
|
|
501
|
+
type ColumnToType<T> = T extends UuidColumnSymbol
|
|
502
|
+
? string
|
|
503
|
+
: T extends StringColumnSymbol
|
|
504
|
+
? string
|
|
505
|
+
: T extends NumericColumnSymbol
|
|
506
|
+
? number
|
|
507
|
+
: T extends DateColumnSymbol
|
|
508
|
+
? string | Date
|
|
509
|
+
: T extends DateWithTimeZoneColumnSymbol
|
|
510
|
+
? string | Date
|
|
511
|
+
: T extends BinaryColumnSymbol
|
|
512
|
+
? string
|
|
513
|
+
: T extends BooleanColumnSymbol
|
|
514
|
+
? boolean
|
|
515
|
+
: T extends JsonOf<infer M>
|
|
516
|
+
? M
|
|
517
|
+
: T extends JSONColumnSymbol
|
|
518
|
+
? JsonType
|
|
519
|
+
: never;
|
|
520
|
+
|
|
521
|
+
type MappedColumnsAndRelations<T> = RemoveNeverFlat<{
|
|
522
|
+
[K in keyof T]: T[K] extends StringColumnTypeDef<infer M>
|
|
523
|
+
? StringColumnType<M>
|
|
524
|
+
: T[K] extends UuidColumnTypeDef<infer M>
|
|
525
|
+
? UuidColumnType<M>
|
|
526
|
+
: T[K] extends NumericColumnTypeDef<infer M>
|
|
527
|
+
? NumericColumnType<M>
|
|
528
|
+
: T[K] extends DateColumnTypeDef<infer M>
|
|
529
|
+
? DateColumnType<M>
|
|
530
|
+
: T[K] extends DateWithTimeZoneColumnTypeDef<infer M>
|
|
531
|
+
? DateWithTimeZoneColumnType<M>
|
|
532
|
+
: T[K] extends BinaryColumnTypeDef<infer M>
|
|
533
|
+
? BinaryColumnType<M>
|
|
534
|
+
: T[K] extends BooleanColumnTypeDef<infer M>
|
|
535
|
+
? BooleanColumnType<M>
|
|
536
|
+
: T[K] extends JSONColumnTypeDef<infer M>
|
|
537
|
+
? JSONColumnType<M>
|
|
538
|
+
: T[K] extends ManyRelation
|
|
539
|
+
? MappedColumnsAndRelations<T[K]> &
|
|
540
|
+
ManyTable<T[K]> & OneOrJoinTable<T[K]>
|
|
541
|
+
: T[K] extends RelatedTable
|
|
542
|
+
? MappedColumnsAndRelations<T[K]> & OneOrJoinTable<T[K]>
|
|
543
|
+
: never;
|
|
544
|
+
}>;
|
|
545
|
+
|
|
546
|
+
type OneOrJoinTable<T> = ((
|
|
547
|
+
fn: (table: MappedColumnsAndRelations<T>) => RawFilter
|
|
548
|
+
) => Filter) & {
|
|
549
|
+
exists: () => Filter;
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
type ManyTable<T> = ((
|
|
553
|
+
) => Filter) & {
|
|
554
|
+
all(selector: (table: MappedColumnsAndRelations<T>) => RawFilter): Filter;
|
|
555
|
+
any(selector: (table: MappedColumnsAndRelations<T>) => RawFilter): Filter;
|
|
556
|
+
none(selector: (table: MappedColumnsAndRelations<T>) => RawFilter): Filter;
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
export type AllowedDbMap<T> = {
|
|
560
|
+
[P in keyof T]: T[P] extends MappedTableDef<infer U> ? T[P] : never;
|
|
561
|
+
};
|
|
562
|
+
|
|
563
|
+
type AllowedColumnsAndTablesStrategy<T> = {
|
|
564
|
+
[P in keyof T]: T[P] extends ColumnAndTableTypes ? T[P] : never;
|
|
565
|
+
};
|
|
566
|
+
type AllowedColumnsAndTablesConcurrency<T> = {
|
|
567
|
+
[P in keyof T]: T[P] extends ColumnAndTableTypes ? T[P] : never;
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
type FetchingStrategy<T> = FetchingStrategyBase<T> | AggType<T>
|
|
572
|
+
|
|
573
|
+
type AggregateStrategy<T> = AggregateStrategyBase<T> | AggType<T>
|
|
574
|
+
|
|
575
|
+
type AggType<T> = {
|
|
576
|
+
[name: string]: AggregationFunction<T>;
|
|
577
|
+
} & {
|
|
578
|
+
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
type AggregateStrategyBase<T> =
|
|
582
|
+
{
|
|
583
|
+
limit?: number;
|
|
584
|
+
offset?: number;
|
|
585
|
+
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
586
|
+
};
|
|
587
|
+
|
|
588
|
+
type FetchingStrategyBase<T> = {
|
|
589
|
+
[K in keyof T &
|
|
590
|
+
keyof RemoveNever<
|
|
591
|
+
AllowedColumnsAndTablesStrategy<T>
|
|
592
|
+
>]?: T[K] extends ColumnSymbols
|
|
593
|
+
? boolean
|
|
594
|
+
: boolean | FetchingStrategyBase<T[K]> | AggType<T[K]>;
|
|
595
|
+
} & {
|
|
596
|
+
orderBy?:
|
|
597
|
+
| OrderBy<Extract<keyof AllowedColumns<T>, string>>[]
|
|
598
|
+
| OrderBy<Extract<keyof AllowedColumns<T>, string>>;
|
|
599
|
+
limit?: number;
|
|
600
|
+
offset?: number;
|
|
601
|
+
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
602
|
+
|
|
603
|
+
};
|
|
604
|
+
type ExtractAggregates<Agg> = {
|
|
605
|
+
[K in keyof Agg as
|
|
606
|
+
Required<Agg>[K] extends (agg: Aggregate<infer V>) => ColumnSymbols
|
|
607
|
+
? K extends 'where' ? never : K
|
|
608
|
+
: never
|
|
609
|
+
]: Agg[K] extends (agg: Aggregate<infer V>) => infer R ? R : never;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
type AggregationFunction<T> = (agg: Aggregate<T>) => ColumnSymbols;
|
|
613
|
+
|
|
614
|
+
type Aggregate<T> =
|
|
615
|
+
RelatedColumns<T> &
|
|
616
|
+
{
|
|
617
|
+
sum(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
618
|
+
avg(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
619
|
+
min(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
620
|
+
max(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
621
|
+
count(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
type RelatedColumns<T> = RemoveNeverFlat<{
|
|
625
|
+
[K in keyof T]:
|
|
626
|
+
T[K] extends StringColumnTypeDef<infer M> ? StringColumnSymbol
|
|
627
|
+
: T[K] extends UuidColumnTypeDef<infer M> ? UuidColumnSymbol
|
|
628
|
+
: T[K] extends NumericColumnTypeDef<infer M> ? NumericColumnSymbol
|
|
629
|
+
: T[K] extends DateColumnTypeDef<infer M> ? DateColumnSymbol
|
|
630
|
+
: T[K] extends DateWithTimeZoneColumnTypeDef<infer M> ? DateWithTimeZoneColumnSymbol
|
|
631
|
+
: T[K] extends BinaryColumnTypeDef<infer M> ? BinaryColumnSymbol
|
|
632
|
+
: T[K] extends BooleanColumnTypeDef<infer M> ? BooleanColumnSymbol
|
|
633
|
+
: T[K] extends JSONColumnTypeDef<infer M> ? JSONColumnSymbol
|
|
634
|
+
: T[K] extends ManyRelation
|
|
635
|
+
? RelatedColumns<T[K]>
|
|
636
|
+
: T[K] extends RelatedTable
|
|
637
|
+
? RelatedColumns<T[K]>
|
|
638
|
+
: never;
|
|
639
|
+
}>;
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
type AggregateColumns<T> = RemoveNeverFlat<{
|
|
643
|
+
[K in keyof T]:
|
|
644
|
+
T[K] extends ManyRelation
|
|
645
|
+
? AggregateColumns2<T[K]>
|
|
646
|
+
: T[K] extends RelatedTable
|
|
647
|
+
? AggregateColumns2<T[K]>
|
|
648
|
+
: never;
|
|
649
|
+
}>;
|
|
650
|
+
|
|
651
|
+
type AggregateColumns2<T> = RemoveNeverFlat<{
|
|
652
|
+
[K in keyof T]:
|
|
653
|
+
T[K] extends NumericColumnTypeDef<infer M> ? NumericColumnSymbol
|
|
654
|
+
: T[K] extends ManyRelation
|
|
655
|
+
? AggregateColumns2<T[K]>
|
|
656
|
+
: T[K] extends RelatedTable
|
|
657
|
+
? AggregateColumns2<T[K]>
|
|
658
|
+
: never;
|
|
659
|
+
}>;
|
|
660
|
+
|
|
661
|
+
type TablesDeep<T> = RemoveNeverFlat<{
|
|
662
|
+
[K in keyof T]:
|
|
663
|
+
T[K] extends ManyRelation
|
|
664
|
+
? TablesDeep<T[K]>
|
|
665
|
+
: T[K] extends RelatedTable
|
|
666
|
+
? TablesDeep<T[K]>
|
|
667
|
+
: never;
|
|
668
|
+
}>;
|
|
669
|
+
|
|
670
|
+
type ColumnConcurrency = {
|
|
671
|
+
readonly?: boolean;
|
|
672
|
+
concurrency?: ConcurrencyValues;
|
|
673
|
+
};
|
|
674
|
+
|
|
675
|
+
type ColumnSymbols =
|
|
676
|
+
| StringColumnSymbol
|
|
677
|
+
| UuidColumnSymbol
|
|
678
|
+
| NumericColumnSymbol
|
|
679
|
+
| DateColumnSymbol
|
|
680
|
+
| DateWithTimeZoneColumnSymbol
|
|
681
|
+
| BooleanColumnSymbol
|
|
682
|
+
| BinaryColumnSymbol
|
|
683
|
+
| JSONColumnSymbol;
|
|
684
|
+
|
|
685
|
+
type Concurrency<T> = {
|
|
686
|
+
[K in keyof T &
|
|
687
|
+
keyof RemoveNever<
|
|
688
|
+
AllowedColumnsAndTablesConcurrency<T>
|
|
689
|
+
>]?: T[K] extends ColumnSymbols ? ColumnConcurrency : Concurrency<T[K]>;
|
|
690
|
+
} & {
|
|
691
|
+
readonly?: boolean;
|
|
692
|
+
concurrency?: ConcurrencyValues;
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
type DbConcurrency<T> = {
|
|
696
|
+
[K in keyof T]: T[K] extends MappedTableDef<infer U>
|
|
697
|
+
? Concurrency<U>
|
|
698
|
+
: never;
|
|
699
|
+
} & {
|
|
700
|
+
readonly?: boolean;
|
|
701
|
+
concurrency?: ConcurrencyValues;
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
type ConcurrencyValues = 'optimistic' | 'skipOnConflict' | 'overwrite';
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
type OrderBy<T extends string> = `${T} ${'asc' | 'desc'}` | T;
|
|
709
|
+
|
|
710
|
+
type RelatedTable = {
|
|
711
|
+
[' relatedTable']: boolean;
|
|
712
|
+
};
|
|
713
|
+
|
|
714
|
+
type PickTypesOf<T, U> = {
|
|
715
|
+
[K in keyof T as T[K] extends U ? K : never]: T[K];
|
|
716
|
+
};
|
|
717
|
+
|
|
718
|
+
type ExtractPrimary<T> = PickTypesOf<T, IsPrimary>;
|
|
719
|
+
type ExtractPrimary1<T> = PickTypesOf<
|
|
720
|
+
T,
|
|
721
|
+
PickPropertyValue1<PickTypesOf<T, IsPrimary>>
|
|
722
|
+
>;
|
|
723
|
+
|
|
724
|
+
type ExtractPrimary2<T> = PickTypesOf<
|
|
725
|
+
T,
|
|
726
|
+
PickPropertyValue2<PickTypesOf<T, IsPrimary>>
|
|
727
|
+
>;
|
|
728
|
+
type ExtractPrimary3<T> = PickTypesOf<
|
|
729
|
+
T,
|
|
730
|
+
PickPropertyValue3<PickTypesOf<T, IsPrimary>>
|
|
731
|
+
>;
|
|
732
|
+
type ExtractPrimary4<T> = PickTypesOf<
|
|
733
|
+
T,
|
|
734
|
+
PickPropertyValue4<PickTypesOf<T, IsPrimary>>
|
|
735
|
+
>;
|
|
736
|
+
type ExtractPrimary5<T> = PickTypesOf<
|
|
737
|
+
T,
|
|
738
|
+
PickPropertyValue5<PickTypesOf<T, IsPrimary>>
|
|
739
|
+
>;
|
|
740
|
+
type ExtractPrimary6<T> = PickTypesOf<
|
|
741
|
+
T,
|
|
742
|
+
PickPropertyValue6<PickTypesOf<T, IsPrimary>>
|
|
743
|
+
>;
|
|
744
|
+
|
|
745
|
+
type ToColumnTypes<T> = {
|
|
746
|
+
[K in keyof T]: T[K] extends UuidColumnSymbol
|
|
747
|
+
? UuidColumnSymbol
|
|
748
|
+
: T[K] extends StringColumnSymbol
|
|
749
|
+
? StringColumnSymbol
|
|
750
|
+
: T[K] extends NumericColumnSymbol
|
|
751
|
+
? NumericColumnSymbol
|
|
752
|
+
: T[K] extends DateColumnSymbol
|
|
753
|
+
? DateColumnSymbol
|
|
754
|
+
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
755
|
+
? DateWithTimeZoneColumnSymbol
|
|
756
|
+
: T[K] extends BinaryColumnSymbol
|
|
757
|
+
? BinaryColumnSymbol
|
|
758
|
+
: T[K] extends BooleanColumnSymbol
|
|
759
|
+
? BooleanColumnSymbol
|
|
760
|
+
: T[K] extends JSONColumnSymbol
|
|
761
|
+
? JSONColumnSymbol
|
|
762
|
+
: never;
|
|
763
|
+
}[keyof T];
|
|
764
|
+
|
|
765
|
+
type KeyCandidates1<TFrom, TTo> = PickTypesOf<
|
|
766
|
+
TFrom,
|
|
767
|
+
ToColumnTypes<ExtractPrimary1<TTo>>
|
|
768
|
+
>;
|
|
769
|
+
type KeyCandidates2<TFrom, TTo> = PickTypesOf<
|
|
770
|
+
TFrom,
|
|
771
|
+
ToColumnTypes<ExtractPrimary2<TTo>>
|
|
772
|
+
>;
|
|
773
|
+
type KeyCandidates3<TFrom, TTo> = PickTypesOf<
|
|
774
|
+
TFrom,
|
|
775
|
+
ToColumnTypes<ExtractPrimary3<TTo>>
|
|
776
|
+
>;
|
|
777
|
+
type KeyCandidates4<TFrom, TTo> = PickTypesOf<
|
|
778
|
+
TFrom,
|
|
779
|
+
ToColumnTypes<ExtractPrimary4<TTo>>
|
|
780
|
+
>;
|
|
781
|
+
type KeyCandidates5<TFrom, TTo> = PickTypesOf<
|
|
782
|
+
TFrom,
|
|
783
|
+
ToColumnTypes<ExtractPrimary5<TTo>>
|
|
784
|
+
>;
|
|
785
|
+
type KeyCandidates6<TFrom, TTo> = PickTypesOf<
|
|
786
|
+
TFrom,
|
|
787
|
+
ToColumnTypes<ExtractPrimary6<TTo>>
|
|
788
|
+
>;
|
|
789
|
+
type ReferenceMapper<TFrom, TTo> = ReferenceMapperHelper<
|
|
790
|
+
TFrom,
|
|
791
|
+
TTo,
|
|
792
|
+
CountProperties<ExtractPrimary<TTo>>
|
|
793
|
+
>;
|
|
794
|
+
type OneMapper<TFrom, TTo> = HasMapperHelper<
|
|
795
|
+
TFrom,
|
|
796
|
+
TTo,
|
|
797
|
+
CountProperties<ExtractPrimary<TFrom>>,
|
|
798
|
+
OneRelation
|
|
799
|
+
>;
|
|
800
|
+
type ManyMapper<TFrom, TTo> = HasMapperHelper<
|
|
801
|
+
TFrom,
|
|
802
|
+
TTo,
|
|
803
|
+
CountProperties<ExtractPrimary<TFrom>>,
|
|
804
|
+
ManyRelation
|
|
805
|
+
>;
|
|
806
|
+
|
|
807
|
+
type ReferenceMapperHelper<TFrom, TTo, TPrimaryCount> =
|
|
808
|
+
6 extends TPrimaryCount
|
|
809
|
+
? {
|
|
810
|
+
by<C1 extends keyof KeyCandidates1<TFrom, TTo>, C2 extends keyof KeyCandidates2<TFrom, TTo>, C3 extends keyof KeyCandidates2<TFrom, TTo>, C4 extends keyof KeyCandidates2<TFrom, TTo>, C5 extends keyof KeyCandidates2<TFrom, TTo>, C6 extends keyof KeyCandidates2<TFrom, TTo>>(
|
|
811
|
+
column: C1,
|
|
812
|
+
column2: C2,
|
|
813
|
+
column3: C3,
|
|
814
|
+
column4: C4,
|
|
815
|
+
column5: C5,
|
|
816
|
+
column6: C6
|
|
817
|
+
): MappedTableDef<TTo> & RelatedTable;
|
|
818
|
+
}
|
|
819
|
+
: 5 extends TPrimaryCount
|
|
820
|
+
? {
|
|
821
|
+
by<C1 extends keyof KeyCandidates1<TFrom, TTo>, C2 extends keyof KeyCandidates2<TFrom, TTo>, C3 extends keyof KeyCandidates2<TFrom, TTo>, C4 extends keyof KeyCandidates2<TFrom, TTo>, C5 extends keyof KeyCandidates2<TFrom, TTo>>(
|
|
822
|
+
column: C1,
|
|
823
|
+
column2: C2,
|
|
824
|
+
column3: C3,
|
|
825
|
+
column4: C4,
|
|
826
|
+
column5: C5
|
|
827
|
+
): MappedTableDef<TTo> & RelatedTable;
|
|
828
|
+
}
|
|
829
|
+
: 4 extends TPrimaryCount
|
|
830
|
+
? {
|
|
831
|
+
by<C1 extends keyof KeyCandidates1<TFrom, TTo>, C2 extends keyof KeyCandidates2<TFrom, TTo>, C3 extends keyof KeyCandidates2<TFrom, TTo>, C4 extends keyof KeyCandidates2<TFrom, TTo>>(
|
|
832
|
+
column: C1,
|
|
833
|
+
column2: C2,
|
|
834
|
+
column3: C3,
|
|
835
|
+
column4: C4
|
|
836
|
+
): MappedTableDef<TTo> & RelatedTable;
|
|
837
|
+
}
|
|
838
|
+
: 3 extends TPrimaryCount
|
|
839
|
+
? {
|
|
840
|
+
by<C1 extends keyof KeyCandidates1<TFrom, TTo>, C2 extends keyof KeyCandidates2<TFrom, TTo>, C3 extends keyof KeyCandidates2<TFrom, TTo>>(
|
|
841
|
+
column: C1,
|
|
842
|
+
column2: C2,
|
|
843
|
+
column3: C3
|
|
844
|
+
): MappedTableDef<TTo> & RelatedTable;
|
|
845
|
+
}
|
|
846
|
+
: 2 extends TPrimaryCount
|
|
847
|
+
? {
|
|
848
|
+
by<C1 extends keyof KeyCandidates1<TFrom, TTo>, C2 extends keyof KeyCandidates2<TFrom, TTo>>(
|
|
849
|
+
column: C1,
|
|
850
|
+
column2: C2
|
|
851
|
+
): MappedTableDef<TTo> & RelatedTable;
|
|
852
|
+
}
|
|
853
|
+
: 1 extends TPrimaryCount
|
|
854
|
+
? {
|
|
855
|
+
by<C1 extends keyof KeyCandidates1<TFrom, TTo>>(
|
|
856
|
+
column: C1
|
|
857
|
+
): MappedTableDef<TTo> & RelatedTable;
|
|
858
|
+
}
|
|
859
|
+
: {};
|
|
860
|
+
|
|
861
|
+
type HasMapperHelper<
|
|
862
|
+
TFrom,
|
|
863
|
+
TTo,
|
|
864
|
+
TPrimaryCount,
|
|
865
|
+
TExtra = {}
|
|
866
|
+
> = 6 extends TPrimaryCount
|
|
867
|
+
? {
|
|
868
|
+
by(
|
|
869
|
+
column: keyof KeyCandidates1<TTo, TFrom>,
|
|
870
|
+
column2: keyof KeyCandidates2<TTo, TFrom>,
|
|
871
|
+
column3: keyof KeyCandidates3<TTo, TFrom>,
|
|
872
|
+
column4: keyof KeyCandidates4<TTo, TFrom>,
|
|
873
|
+
column5: keyof KeyCandidates5<TTo, TFrom>,
|
|
874
|
+
column6: keyof KeyCandidates6<TTo, TFrom>
|
|
875
|
+
): MappedTableDef<TTo> & RelatedTable & TExtra;
|
|
876
|
+
}
|
|
877
|
+
: 5 extends TPrimaryCount
|
|
878
|
+
? {
|
|
879
|
+
by(
|
|
880
|
+
column: keyof KeyCandidates1<TTo, TFrom>,
|
|
881
|
+
column2: keyof KeyCandidates2<TTo, TFrom>,
|
|
882
|
+
column3: keyof KeyCandidates3<TTo, TFrom>,
|
|
883
|
+
column4: keyof KeyCandidates4<TTo, TFrom>,
|
|
884
|
+
column5: keyof KeyCandidates5<TTo, TFrom>
|
|
885
|
+
): MappedTableDef<TTo> & RelatedTable & TExtra;
|
|
886
|
+
}
|
|
887
|
+
: 4 extends TPrimaryCount
|
|
888
|
+
? {
|
|
889
|
+
by(
|
|
890
|
+
column: keyof KeyCandidates1<TTo, TFrom>,
|
|
891
|
+
column2: keyof KeyCandidates2<TTo, TFrom>,
|
|
892
|
+
column3: keyof KeyCandidates3<TTo, TFrom>,
|
|
893
|
+
column4: keyof KeyCandidates4<TTo, TFrom>
|
|
894
|
+
): MappedTableDef<TTo> & RelatedTable & TExtra;
|
|
895
|
+
}
|
|
896
|
+
: 3 extends TPrimaryCount
|
|
897
|
+
? {
|
|
898
|
+
by(
|
|
899
|
+
column: keyof KeyCandidates1<TTo, TFrom>,
|
|
900
|
+
column2: keyof KeyCandidates2<TTo, TFrom>,
|
|
901
|
+
column3: keyof KeyCandidates3<TTo, TFrom>
|
|
902
|
+
): MappedTableDef<TTo> & RelatedTable & TExtra;
|
|
903
|
+
}
|
|
904
|
+
: 2 extends TPrimaryCount
|
|
905
|
+
? {
|
|
906
|
+
by(
|
|
907
|
+
column: keyof KeyCandidates1<TTo, TFrom>,
|
|
908
|
+
column2: keyof KeyCandidates2<TTo, TFrom>
|
|
909
|
+
): MappedTableDef<TTo> & RelatedTable & TExtra;
|
|
910
|
+
}
|
|
911
|
+
: 1 extends TPrimaryCount
|
|
912
|
+
? {
|
|
913
|
+
by(
|
|
914
|
+
column: keyof KeyCandidates1<TTo, TFrom>
|
|
915
|
+
): MappedTableDef<TTo> & RelatedTable & TExtra;
|
|
916
|
+
}
|
|
917
|
+
: {};
|
|
918
|
+
|
|
919
|
+
type ColumnMapperInit<T> = {
|
|
920
|
+
column(columnName: string): ColumnType<{}>;
|
|
921
|
+
primaryColumn(columnName: string): ColumnType<IsPrimary>;
|
|
922
|
+
};
|
|
923
|
+
|
|
924
|
+
type ColumnMapper<T> = {
|
|
925
|
+
references<TTo>(mappedTable: MappedTableDef<TTo>): ReferenceMapper<T, TTo>;
|
|
926
|
+
hasOne<TTo>(mappedTable: MappedTableDef<TTo>): OneMapper<T, TTo>;
|
|
927
|
+
hasMany<TTo>(mappedTable: MappedTableDef<TTo>): ManyMapper<T, TTo>;
|
|
928
|
+
};
|
|
929
|
+
|
|
930
|
+
type ManyRelation = {
|
|
931
|
+
[' isManyRelation']: true;
|
|
932
|
+
};
|
|
933
|
+
|
|
934
|
+
type OneRelation = {
|
|
935
|
+
[' isOneRelation']: true;
|
|
936
|
+
};
|
|
937
|
+
|
|
938
|
+
type MappedTableDefInit<T> = {
|
|
939
|
+
map<V extends AllowedColumnsAndTablesWithPrimaryMap<V>>(
|
|
940
|
+
callback: (mapper: ColumnMapperInit<T>) => V
|
|
941
|
+
): MappedTableDef<T & V>;
|
|
942
|
+
} & T;
|
|
943
|
+
|
|
944
|
+
type MappedTableDef<T> = {
|
|
945
|
+
map<V extends AllowedColumnsAndTablesMap<V>>(
|
|
946
|
+
callback: (mapper: ColumnMapper<T>) => V
|
|
947
|
+
): MappedTableDef<T & V>;
|
|
948
|
+
formulaDiscriminators(...discriminators: string[]): MappedTableDef<T>;
|
|
949
|
+
columnDiscriminators(...discriminators: string[]): MappedTableDef<T>;
|
|
950
|
+
} & T;
|
|
951
|
+
|
|
952
|
+
type NotNullProperties<T> = Pick<
|
|
953
|
+
T,
|
|
954
|
+
{ [K in keyof T]: T[K] extends NotNull ? K : T[K] extends ManyRelation ? K : never }[keyof T]
|
|
955
|
+
>;
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
type NullProperties<T> = Pick<
|
|
959
|
+
T,
|
|
960
|
+
{ [K in keyof T]: T[K] extends NotNull | ManyRelation ? never : K }[keyof T]
|
|
961
|
+
>;
|
|
962
|
+
|
|
963
|
+
type NotNullInsertProperties<T> = Pick<
|
|
964
|
+
T,
|
|
965
|
+
{ [K in keyof T]: T[K] extends NotNullExceptInsert
|
|
966
|
+
? never
|
|
967
|
+
: T[K] extends NotNull ? K : never
|
|
968
|
+
}[keyof T]
|
|
969
|
+
>;
|
|
970
|
+
type NullInsertProperties<T> = Pick<
|
|
971
|
+
T,
|
|
972
|
+
{ [K in keyof T]: T[K] extends NotNullExceptInsert
|
|
973
|
+
? K
|
|
974
|
+
: T[K] extends NotNull ? never : K
|
|
975
|
+
}[keyof T]
|
|
976
|
+
>;
|
|
977
|
+
|
|
978
|
+
type ColumnTypes = ColumnSymbols;
|
|
979
|
+
type ColumnAndTableTypes = ColumnSymbols | RelatedTable;
|
|
980
|
+
|
|
981
|
+
type StrategyToRow<T, U> = StrategyToRowData<T> & {
|
|
982
|
+
saveChanges(): Promise<void>;
|
|
983
|
+
saveChanges<C extends Concurrency<U>>(concurrency?: C): Promise<void>;
|
|
984
|
+
acceptChanges(): void;
|
|
985
|
+
clearChanges(): void;
|
|
986
|
+
refresh(): Promise<void>;
|
|
987
|
+
refresh<FS extends FetchingStrategy<U>>(
|
|
988
|
+
fetchingStrategy?: FS
|
|
989
|
+
): Promise<StrategyToRow<FetchedProperties<U, FS>, U>>;
|
|
990
|
+
delete(): Promise<void>;
|
|
991
|
+
delete(concurrency: Concurrency<U>): Promise<void>;
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
type StrategyToRowArray<T, U> = StrategyToRowData<T>[] & {
|
|
996
|
+
saveChanges(): Promise<void>;
|
|
997
|
+
saveChanges<C extends Concurrency<U>>(concurrency?: C): Promise<void>;
|
|
998
|
+
acceptChanges(): void;
|
|
999
|
+
clearChanges(): void;
|
|
1000
|
+
refresh(): Promise<void>;
|
|
1001
|
+
refresh<FS extends FetchingStrategy<U>>(
|
|
1002
|
+
fetchingStrategy?: FS
|
|
1003
|
+
): Promise<StrategyToRowArray<FetchedProperties<U, FS>, U>>;
|
|
1004
|
+
delete(): Promise<void>;
|
|
1005
|
+
delete(concurrency: Concurrency<U>): Promise<void>;
|
|
1006
|
+
};
|
|
1007
|
+
|
|
1008
|
+
type JsonValue = null | boolean | number | string | JsonArray | JsonObject;
|
|
1009
|
+
|
|
1010
|
+
interface JsonArray extends Array<JsonValue> { }
|
|
1011
|
+
|
|
1012
|
+
interface JsonObject {
|
|
1013
|
+
[key: string]: JsonValue;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
type JsonType = JsonArray | JsonObject;
|
|
1017
|
+
|
|
1018
|
+
type AllowedColumnsAndTablesMap<T> = {
|
|
1019
|
+
[P in keyof T]: T[P] extends ColumnTypeOf<infer U> | RelatedTable
|
|
1020
|
+
? T[P]
|
|
1021
|
+
: never;
|
|
1022
|
+
};
|
|
1023
|
+
|
|
1024
|
+
type AllowedColumnsAndTablesWithPrimaryMap<T> = 1 extends CountFirstPrimary<
|
|
1025
|
+
ExtractPrimary<T>
|
|
1026
|
+
>
|
|
1027
|
+
? {
|
|
1028
|
+
[P in keyof T]: T[P] extends ColumnTypeOf<infer U> | RelatedTable
|
|
1029
|
+
? T[P]
|
|
1030
|
+
: never;
|
|
1031
|
+
}
|
|
1032
|
+
: NeedsPrimaryKey;
|
|
1033
|
+
|
|
1034
|
+
type NeedsPrimaryKey = {
|
|
1035
|
+
['Primary column']: void;
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
type CountFirstPrimary<T> = UnionOfTypes<MapPropertiesTo1<T>>;
|
|
1039
|
+
|
|
1040
|
+
type AllowedColumns<T> = RemoveNever<{
|
|
1041
|
+
[P in keyof T]: T[P] extends ColumnTypes ? T[P] : never;
|
|
1042
|
+
}>;
|
|
1043
|
+
|
|
1044
|
+
type AtLeastOneOf<T, U> = {
|
|
1045
|
+
[K in keyof T]: T[K] extends U ? true : never;
|
|
1046
|
+
}[keyof T] extends never
|
|
1047
|
+
? false
|
|
1048
|
+
: true;
|
|
1049
|
+
|
|
1050
|
+
type AtLeastOneTrue<T> = {
|
|
1051
|
+
[K in keyof T]: T[K] extends true ? true : never;
|
|
1052
|
+
}[keyof T] extends never
|
|
1053
|
+
? false
|
|
1054
|
+
: true;
|
|
1055
|
+
|
|
1056
|
+
type ExtractColumnBools<T, TStrategy> = RemoveNever<{
|
|
1057
|
+
[K in keyof TStrategy]: K extends keyof T
|
|
1058
|
+
? T[K] extends ColumnSymbols
|
|
1059
|
+
? TStrategy[K]
|
|
1060
|
+
: never
|
|
1061
|
+
: never;
|
|
1062
|
+
}>;
|
|
1063
|
+
|
|
1064
|
+
type NegotiateNotNull<T> = T extends NotNull ? NotNull : {};
|
|
1065
|
+
|
|
1066
|
+
type FetchedProperties<T, TStrategy> = FetchedColumnProperties<T, TStrategy> & FetchedRelationProperties<T, TStrategy> & ExtractAggregates<TStrategy>
|
|
1067
|
+
type FetchedAggregateProperties<T, TStrategy> = FetchedColumnProperties<T, TStrategy> & ExtractAggregates<TStrategy>
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
type FetchedRelationProperties<T, TStrategy> = RemoveNeverFlat<{
|
|
1071
|
+
[K in keyof T]: K extends keyof TStrategy
|
|
1072
|
+
? TStrategy[K] extends true
|
|
1073
|
+
? T[K] extends ColumnSymbols
|
|
1074
|
+
? never
|
|
1075
|
+
: T[K] extends ManyRelation
|
|
1076
|
+
? FetchedProperties<T[K], {}> & ManyRelation
|
|
1077
|
+
: FetchedProperties<T[K], {}> & NegotiateNotNull<T[K]>
|
|
1078
|
+
: TStrategy[K] extends false
|
|
1079
|
+
? never
|
|
1080
|
+
: T[K] extends ManyRelation
|
|
1081
|
+
? FetchedProperties<T[K], TStrategy[K]> & ManyRelation
|
|
1082
|
+
: FetchedProperties<T[K], TStrategy[K]> & NegotiateNotNull<T[K]>
|
|
1083
|
+
: never;
|
|
1084
|
+
}>;
|
|
1085
|
+
|
|
1086
|
+
type FetchedColumnProperties<T, TStrategy> = RemoveNeverFlat<
|
|
1087
|
+
AtLeastOneTrue<ExtractColumnBools<T, TStrategy>> extends true
|
|
1088
|
+
? {
|
|
1089
|
+
[K in keyof T]: K extends keyof TStrategy
|
|
1090
|
+
? TStrategy[K] extends true
|
|
1091
|
+
? T[K] extends ColumnSymbols
|
|
1092
|
+
? T[K]
|
|
1093
|
+
: never
|
|
1094
|
+
: never
|
|
1095
|
+
: never;
|
|
1096
|
+
}
|
|
1097
|
+
: {
|
|
1098
|
+
[K in keyof T]: K extends keyof TStrategy
|
|
1099
|
+
? TStrategy[K] extends true
|
|
1100
|
+
? T[K] extends ColumnSymbols
|
|
1101
|
+
? T[K]
|
|
1102
|
+
: never
|
|
1103
|
+
: never
|
|
1104
|
+
: NegotiateDefaultStrategy<T[K]>;
|
|
1105
|
+
}
|
|
1106
|
+
>;
|
|
1107
|
+
|
|
1108
|
+
type StrategyToRowData<T> = {
|
|
1109
|
+
[K in keyof RemoveNever<
|
|
1110
|
+
NotNullProperties<T>
|
|
1111
|
+
>]: T[K] extends StringColumnSymbol
|
|
1112
|
+
? string
|
|
1113
|
+
: T[K] extends UuidColumnSymbol
|
|
1114
|
+
? string
|
|
1115
|
+
: T[K] extends NumericColumnSymbol
|
|
1116
|
+
? number
|
|
1117
|
+
: T[K] extends DateColumnSymbol
|
|
1118
|
+
? string | Date
|
|
1119
|
+
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1120
|
+
? string | Date
|
|
1121
|
+
: T[K] extends BinaryColumnSymbol
|
|
1122
|
+
? string
|
|
1123
|
+
: T[K] extends BooleanColumnSymbol
|
|
1124
|
+
? boolean
|
|
1125
|
+
: T[K] extends JsonOf<infer M>
|
|
1126
|
+
? M
|
|
1127
|
+
: T[K] extends JSONColumnSymbol
|
|
1128
|
+
? JsonType
|
|
1129
|
+
: T[K] extends ManyRelation
|
|
1130
|
+
? StrategyToRowData<T[K]>[]
|
|
1131
|
+
: StrategyToRowData<T[K]>;
|
|
1132
|
+
} & {
|
|
1133
|
+
[K in keyof RemoveNever<
|
|
1134
|
+
NullProperties<T>
|
|
1135
|
+
>]?: T[K] extends StringColumnSymbol
|
|
1136
|
+
? string | null
|
|
1137
|
+
: T[K] extends UuidColumnSymbol
|
|
1138
|
+
? string | null
|
|
1139
|
+
: T[K] extends NumericColumnSymbol
|
|
1140
|
+
? number | null
|
|
1141
|
+
: T[K] extends DateColumnSymbol
|
|
1142
|
+
? string | Date | null
|
|
1143
|
+
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1144
|
+
? string | Date | null
|
|
1145
|
+
: T[K] extends BinaryColumnSymbol
|
|
1146
|
+
? string | null
|
|
1147
|
+
: T[K] extends BooleanColumnSymbol
|
|
1148
|
+
? boolean | null
|
|
1149
|
+
: T[K] extends JsonOf<infer M>
|
|
1150
|
+
? M | null
|
|
1151
|
+
: T[K] extends JSONColumnSymbol
|
|
1152
|
+
? JsonType | null
|
|
1153
|
+
: T[K] extends ManyRelation
|
|
1154
|
+
? StrategyToRowData<T[K]>[]
|
|
1155
|
+
: StrategyToRowData<T[K]>;
|
|
1156
|
+
};
|
|
1157
|
+
|
|
1158
|
+
type StrategyToInsertRowData<T> = Omit<{
|
|
1159
|
+
[K in keyof RemoveNever<
|
|
1160
|
+
NotNullInsertProperties<T>
|
|
1161
|
+
>]: T[K] extends StringColumnSymbol
|
|
1162
|
+
? string
|
|
1163
|
+
: T[K] extends UuidColumnSymbol
|
|
1164
|
+
? string
|
|
1165
|
+
: T[K] extends NumericColumnSymbol
|
|
1166
|
+
? number
|
|
1167
|
+
: T[K] extends DateColumnSymbol
|
|
1168
|
+
? string | Date
|
|
1169
|
+
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1170
|
+
? string | Date
|
|
1171
|
+
: T[K] extends BinaryColumnSymbol
|
|
1172
|
+
? string
|
|
1173
|
+
: T[K] extends BooleanColumnSymbol
|
|
1174
|
+
? boolean
|
|
1175
|
+
: T[K] extends JsonOf<infer M>
|
|
1176
|
+
? M
|
|
1177
|
+
: T[K] extends JSONColumnSymbol
|
|
1178
|
+
? JsonType
|
|
1179
|
+
: T[K] extends ManyRelation
|
|
1180
|
+
? StrategyToInsertRowData<T[K]>[]
|
|
1181
|
+
: StrategyToInsertRowData<T[K]>;
|
|
1182
|
+
} & {
|
|
1183
|
+
[K in keyof RemoveNever<
|
|
1184
|
+
NullInsertProperties<T>
|
|
1185
|
+
>]?: T[K] extends StringColumnSymbol
|
|
1186
|
+
? string | null
|
|
1187
|
+
: T[K] extends UuidColumnSymbol
|
|
1188
|
+
? string | null
|
|
1189
|
+
: T[K] extends NumericColumnSymbol
|
|
1190
|
+
? number | null
|
|
1191
|
+
: T[K] extends DateColumnSymbol
|
|
1192
|
+
? string | Date | null
|
|
1193
|
+
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1194
|
+
? string | Date | null
|
|
1195
|
+
: T[K] extends BinaryColumnSymbol
|
|
1196
|
+
? string | null
|
|
1197
|
+
: T[K] extends BooleanColumnSymbol
|
|
1198
|
+
? boolean | null
|
|
1199
|
+
: T[K] extends JsonOf<infer M>
|
|
1200
|
+
? M | null
|
|
1201
|
+
: T[K] extends JSONColumnSymbol
|
|
1202
|
+
? JsonType | null
|
|
1203
|
+
: T[K] extends ManyRelation
|
|
1204
|
+
? StrategyToInsertRowData<T[K]>[]
|
|
1205
|
+
: StrategyToInsertRowData<T[K]>;
|
|
1206
|
+
}, 'formulaDiscriminators' | 'columnDiscriminators' | 'map' | ' isManyRelation' | ' relatedTable' | ' isOneRelation'>
|
|
1207
|
+
;
|
|
1208
|
+
|
|
1209
|
+
type NegotiateDefaultStrategy<T> = T extends ColumnSymbols ? T : never;
|
|
1210
|
+
|
|
1211
|
+
type RemoveNever<T> = {
|
|
1212
|
+
[K in keyof T as T[K] extends never ? never : K]: T[K] extends object
|
|
1213
|
+
? RemoveNever<T[K]>
|
|
1214
|
+
: T[K];
|
|
1215
|
+
};
|
|
1216
|
+
|
|
1217
|
+
type RemoveNeverFlat<T> = {
|
|
1218
|
+
[K in keyof T as T[K] extends never ? never : K]: T[K];
|
|
1219
|
+
};
|
|
1220
|
+
|
|
1221
|
+
type UuidColumnSymbol = {
|
|
1222
|
+
[' isUuid']: true;
|
|
1223
|
+
};
|
|
1224
|
+
type UuidColumnType<M> = {
|
|
1225
|
+
equal(value: string | null | undefined): Filter;
|
|
1226
|
+
eq(value: string | null | undefined): Filter;
|
|
1227
|
+
notEqual(value: string | null | undefined): Filter;
|
|
1228
|
+
ne(value: string | null | undefined): Filter;
|
|
1229
|
+
lessThan(value: string | null | undefined): Filter;
|
|
1230
|
+
lt(value: string | null | undefined): Filter;
|
|
1231
|
+
lessThanOrEqual(value: string | null | undefined): Filter;
|
|
1232
|
+
le(value: string | null | undefined): Filter;
|
|
1233
|
+
greaterThan(value: string | null | undefined): Filter;
|
|
1234
|
+
gt(value: string | null | undefined): Filter;
|
|
1235
|
+
greaterThanOrEqual(value: string | null | undefined): Filter;
|
|
1236
|
+
ge(value: string | null | undefined): Filter;
|
|
1237
|
+
between(from: string | null | undefined, to: string | null | undefined): Filter;
|
|
1238
|
+
in(values: Array<string | null | undefined>): Filter;
|
|
1239
|
+
} & M &
|
|
1240
|
+
UuidColumnSymbol;
|
|
1241
|
+
|
|
1242
|
+
type BinaryColumnSymbol = {
|
|
1243
|
+
[' isBinary']: true;
|
|
1244
|
+
};
|
|
1245
|
+
type BinaryColumnType<M> = {
|
|
1246
|
+
equal(value: string | null | undefined): Filter;
|
|
1247
|
+
eq(value: string | null | undefined): Filter;
|
|
1248
|
+
notEqual(value: string | null | undefined): Filter;
|
|
1249
|
+
ne(value: string | null | undefined): Filter;
|
|
1250
|
+
lessThan(value: string | null | undefined): Filter;
|
|
1251
|
+
lt(value: string | null | undefined): Filter;
|
|
1252
|
+
lessThanOrEqual(value: string | null | undefined): Filter;
|
|
1253
|
+
le(value: string | null | undefined): Filter;
|
|
1254
|
+
greaterThan(value: string | null | undefined): Filter;
|
|
1255
|
+
gt(value: string | null | undefined): Filter;
|
|
1256
|
+
greaterThanOrEqual(value: string | null | undefined): Filter;
|
|
1257
|
+
ge(value: string | null | undefined): Filter;
|
|
1258
|
+
between(from: string | null | undefined, to: string | null | undefined): Filter;
|
|
1259
|
+
in(values: Array<string | null | undefined>): Filter;
|
|
1260
|
+
} & M &
|
|
1261
|
+
BinaryColumnSymbol;
|
|
1262
|
+
|
|
1263
|
+
type BooleanColumnSymbol = {
|
|
1264
|
+
[' isBoolean']: true;
|
|
1265
|
+
};
|
|
1266
|
+
|
|
1267
|
+
type BooleanColumnType<M> = {
|
|
1268
|
+
equal(value: boolean | null | undefined): Filter;
|
|
1269
|
+
eq(value: boolean | null | undefined): Filter;
|
|
1270
|
+
notEqual(value: boolean | null | undefined): Filter;
|
|
1271
|
+
ne(value: boolean | null | undefined): Filter;
|
|
1272
|
+
lessThan(value: boolean | null | undefined): Filter;
|
|
1273
|
+
lt(value: boolean | null | undefined): Filter;
|
|
1274
|
+
lessThanOrEqual(value: boolean | null | undefined): Filter;
|
|
1275
|
+
le(value: boolean | null | undefined): Filter;
|
|
1276
|
+
greaterThan(value: boolean | null | undefined): Filter;
|
|
1277
|
+
gt(value: boolean | null | undefined): Filter;
|
|
1278
|
+
greaterThanOrEqual(value: boolean | null | undefined): Filter;
|
|
1279
|
+
ge(value: boolean | null | undefined): Filter;
|
|
1280
|
+
between(from: boolean | null | undefined, to: boolean | null | undefined): Filter;
|
|
1281
|
+
in(values: Array<boolean | null | undefined>): Filter;
|
|
1282
|
+
} & M &
|
|
1283
|
+
BooleanColumnSymbol;
|
|
1284
|
+
|
|
1285
|
+
type DateColumnSymbol = {
|
|
1286
|
+
[' isDate']: true;
|
|
1287
|
+
};
|
|
1288
|
+
|
|
1289
|
+
type DateColumnType<M> = {
|
|
1290
|
+
equal(value: string | Date | null | undefined): Filter;
|
|
1291
|
+
eq(value: string | Date | null | undefined): Filter;
|
|
1292
|
+
notEqual(value: string | Date | null | undefined): Filter;
|
|
1293
|
+
ne(value: string | Date | null | undefined): Filter;
|
|
1294
|
+
lessThan(value: string | Date | null | undefined): Filter;
|
|
1295
|
+
lt(value: string | Date | null | undefined): Filter;
|
|
1296
|
+
lessThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1297
|
+
le(value: string | Date | null | undefined): Filter;
|
|
1298
|
+
greaterThan(value: string | Date | null | undefined): Filter;
|
|
1299
|
+
gt(value: string | Date | null | undefined): Filter;
|
|
1300
|
+
greaterThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1301
|
+
ge(value: string | Date | null | undefined): Filter;
|
|
1302
|
+
between(from: string | Date, to: string | Date | null | undefined): Filter;
|
|
1303
|
+
in(values: Array<string | Date | null | undefined>): Filter;
|
|
1304
|
+
} & M &
|
|
1305
|
+
DateColumnSymbol;
|
|
1306
|
+
|
|
1307
|
+
type DateWithTimeZoneColumnSymbol = {
|
|
1308
|
+
[' isDateTimeZone']: true;
|
|
1309
|
+
};
|
|
1310
|
+
|
|
1311
|
+
type DateWithTimeZoneColumnType<M> = {
|
|
1312
|
+
equal(value: string | Date | null | undefined): Filter;
|
|
1313
|
+
eq(value: string | Date | null | undefined): Filter;
|
|
1314
|
+
notEqual(value: string | Date | null | undefined): Filter;
|
|
1315
|
+
ne(value: string | Date | null | undefined): Filter;
|
|
1316
|
+
lessThan(value: string | Date | null | undefined): Filter;
|
|
1317
|
+
lt(value: string | Date | null | undefined): Filter;
|
|
1318
|
+
lessThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1319
|
+
le(value: string | Date | null | undefined): Filter;
|
|
1320
|
+
greaterThan(value: string | Date | null | undefined): Filter;
|
|
1321
|
+
gt(value: string | Date | null | undefined): Filter;
|
|
1322
|
+
greaterThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1323
|
+
ge(value: string | Date | null | undefined): Filter;
|
|
1324
|
+
between(from: string | Date, to: string | Date | null | undefined): Filter;
|
|
1325
|
+
in(values: Array<string | Date | null | undefined>): Filter;
|
|
1326
|
+
} & M &
|
|
1327
|
+
DateWithTimeZoneColumnSymbol;
|
|
1328
|
+
|
|
1329
|
+
type StringColumnSymbol = {
|
|
1330
|
+
[' isString']: true;
|
|
1331
|
+
};
|
|
1332
|
+
|
|
1333
|
+
type StringColumnType<M> = {
|
|
1334
|
+
equal(value: string | null | undefined): Filter;
|
|
1335
|
+
eq(value: string | null | undefined): Filter;
|
|
1336
|
+
notEqual(value: string | null | undefined): Filter;
|
|
1337
|
+
ne(value: string | null | undefined): Filter;
|
|
1338
|
+
lessThan(value: string | null | undefined): Filter;
|
|
1339
|
+
lt(value: string | null | undefined): Filter;
|
|
1340
|
+
lessThanOrEqual(value: string | null | undefined): Filter;
|
|
1341
|
+
le(value: string | null | undefined): Filter;
|
|
1342
|
+
greaterThan(value: string | null | undefined): Filter;
|
|
1343
|
+
gt(value: string | null | undefined): Filter;
|
|
1344
|
+
greaterThanOrEqual(value: string | null | undefined): Filter;
|
|
1345
|
+
ge(value: string | null | undefined): Filter;
|
|
1346
|
+
between(from: string | null | undefined, to: string | null | undefined): Filter;
|
|
1347
|
+
in(values: Array<string | null | undefined>): Filter;
|
|
1348
|
+
|
|
1349
|
+
startsWith(value: string | null | undefined): Filter;
|
|
1350
|
+
endsWith(value: string | null | undefined): Filter;
|
|
1351
|
+
contains(value: string | null | undefined): Filter;
|
|
1352
|
+
iStartsWith(value: string | null | undefined): Filter;
|
|
1353
|
+
iEndsWith(value: string | null | undefined): Filter;
|
|
1354
|
+
iContains(value: string | null | undefined): Filter;
|
|
1355
|
+
iEqual(value: string | null | undefined): Filter;
|
|
1356
|
+
ieq(value: string | null | undefined): Filter;
|
|
1357
|
+
} & M &
|
|
1358
|
+
StringColumnSymbol;
|
|
1359
|
+
|
|
1360
|
+
type NumericColumnSymbol = {
|
|
1361
|
+
[' isNumeric']: true;
|
|
1362
|
+
};
|
|
1363
|
+
type NumericColumnType<M> = {
|
|
1364
|
+
equal(value: number | null | undefined): Filter;
|
|
1365
|
+
eq(value: number | null | undefined): Filter;
|
|
1366
|
+
notEqual(value: number | null | undefined): Filter;
|
|
1367
|
+
ne(value: number | null | undefined): Filter;
|
|
1368
|
+
lessThan(value: number | null | undefined): Filter;
|
|
1369
|
+
lt(value: number | null | undefined): Filter;
|
|
1370
|
+
lessThanOrEqual(value: number | null | undefined): Filter;
|
|
1371
|
+
le(value: number | null | undefined): Filter;
|
|
1372
|
+
greaterThan(value: number | null | undefined): Filter;
|
|
1373
|
+
gt(value: number | null | undefined): Filter;
|
|
1374
|
+
greaterThanOrEqual(value: number | null | undefined): Filter;
|
|
1375
|
+
ge(value: number | null | undefined): Filter;
|
|
1376
|
+
between(from: number, to: number | null | undefined): Filter;
|
|
1377
|
+
in(values: Array<number | null | undefined>): Filter;
|
|
1378
|
+
} & M &
|
|
1379
|
+
NumericColumnSymbol;
|
|
1380
|
+
|
|
1381
|
+
type JSONColumnSymbol = {
|
|
1382
|
+
[' isJSON']: true;
|
|
1383
|
+
};
|
|
1384
|
+
|
|
1385
|
+
type JSONColumnType<M> = {
|
|
1386
|
+
equal(value: ToJsonType<M> | null | undefined): Filter;
|
|
1387
|
+
eq(value: ToJsonType<M> | null | undefined): Filter;
|
|
1388
|
+
notEqual(value: ToJsonType<M> | null | undefined): Filter;
|
|
1389
|
+
ne(value: ToJsonType<M> | null | undefined): Filter;
|
|
1390
|
+
lessThan(value: ToJsonType<M> | null | undefined): Filter;
|
|
1391
|
+
lt(value: ToJsonType<M> | null | undefined): Filter;
|
|
1392
|
+
lessThanOrEqual(value: ToJsonType<M> | null | undefined): Filter;
|
|
1393
|
+
le(value: ToJsonType<M> | null | undefined): Filter;
|
|
1394
|
+
greaterThan(value: ToJsonType<M> | null | undefined): Filter;
|
|
1395
|
+
gt(value: ToJsonType<M> | null | undefined): Filter;
|
|
1396
|
+
greaterThanOrEqual(value: ToJsonType<M> | null | undefined): Filter;
|
|
1397
|
+
ge(value: ToJsonType<M> | null | undefined): Filter;
|
|
1398
|
+
between(from: ToJsonType<M>, to: ToJsonType<M> | null | undefined): Filter;
|
|
1399
|
+
in(values: Array<ToJsonType<M> | null | undefined>): Filter;
|
|
1400
|
+
} & M &
|
|
1401
|
+
JSONColumnSymbol;
|
|
1402
|
+
|
|
1403
|
+
interface IsPrimary {
|
|
1404
|
+
[' isPrimary']: boolean;
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
type NotNull = {
|
|
1408
|
+
[' notNull']: boolean;
|
|
1409
|
+
};
|
|
1410
|
+
|
|
1411
|
+
type NotNullExceptInsert = {
|
|
1412
|
+
[' notNullExceptInsert']: boolean;
|
|
1413
|
+
};
|
|
1414
|
+
|
|
1415
|
+
type JsonOf<T> = {
|
|
1416
|
+
[' isjsonOf']: boolean;
|
|
1417
|
+
type: T;
|
|
1418
|
+
};
|
|
1419
|
+
|
|
1420
|
+
interface ColumnType<M> {
|
|
1421
|
+
string(): StringColumnTypeDef<M & StringColumnSymbol>;
|
|
1422
|
+
uuid(): UuidColumnTypeDef<M & UuidColumnSymbol>;
|
|
1423
|
+
numeric(): NumericColumnTypeDef<M & NumericColumnSymbol>;
|
|
1424
|
+
date(): DateColumnTypeDef<M & DateColumnSymbol>;
|
|
1425
|
+
dateWithTimeZone(): DateWithTimeZoneColumnTypeDef<M & DateWithTimeZoneColumnSymbol>;
|
|
1426
|
+
binary(): BinaryColumnTypeDef<M & BinaryColumnSymbol>;
|
|
1427
|
+
boolean(): BooleanColumnTypeDef<M & BooleanColumnSymbol>;
|
|
1428
|
+
json(): JSONColumnTypeDef<M & JSONColumnSymbol>;
|
|
1429
|
+
jsonOf<T>(): JSONColumnTypeDef<M & JSONColumnSymbol & JsonOf<T>>;
|
|
1430
|
+
jsonOf<T>(helper: T): JSONColumnTypeDef<M & JSONColumnSymbol & JsonOf<T>>;
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
type UuidValidator<M> = M extends NotNull
|
|
1434
|
+
? {
|
|
1435
|
+
validate(validator: (value: string) => void): UuidColumnTypeDef<M>;
|
|
1436
|
+
}
|
|
1437
|
+
: {
|
|
1438
|
+
validate(
|
|
1439
|
+
validator: (value?: string | null) => void
|
|
1440
|
+
): UuidColumnTypeDef<M>;
|
|
1441
|
+
};
|
|
1442
|
+
type StringValidator<M> = M extends NotNull
|
|
1443
|
+
? {
|
|
1444
|
+
validate(validator: (value: string) => void): StringColumnTypeDef<M>;
|
|
1445
|
+
}
|
|
1446
|
+
: {
|
|
1447
|
+
validate(
|
|
1448
|
+
validator: (value?: string | null) => void
|
|
1449
|
+
): StringColumnTypeDef<M>;
|
|
1450
|
+
};
|
|
1451
|
+
type NumericValidator<M> = M extends NotNull
|
|
1452
|
+
? {
|
|
1453
|
+
validate(validator: (value: number) => void): NumericColumnTypeDef<M>;
|
|
1454
|
+
}
|
|
1455
|
+
: {
|
|
1456
|
+
validate(
|
|
1457
|
+
validator: (value?: number | null) => void
|
|
1458
|
+
): NumericColumnTypeDef<M>;
|
|
1459
|
+
};
|
|
1460
|
+
type BinaryValidator<M> = M extends NotNull
|
|
1461
|
+
? {
|
|
1462
|
+
validate(validator: (value: string) => void): BinaryColumnTypeDef<M>;
|
|
1463
|
+
}
|
|
1464
|
+
: {
|
|
1465
|
+
validate(
|
|
1466
|
+
validator: (value?: string | null) => void
|
|
1467
|
+
): BinaryColumnTypeDef<M>;
|
|
1468
|
+
};
|
|
1469
|
+
type BooleanValidator<M> = M extends NotNull
|
|
1470
|
+
? {
|
|
1471
|
+
validate(validator: (value: boolean) => void): BooleanColumnTypeDef<M>;
|
|
1472
|
+
}
|
|
1473
|
+
: {
|
|
1474
|
+
validate(
|
|
1475
|
+
validator: (value?: boolean | null) => void
|
|
1476
|
+
): BooleanColumnTypeDef<M>;
|
|
1477
|
+
};
|
|
1478
|
+
type JSONValidator<M> = M extends NotNull
|
|
1479
|
+
? {
|
|
1480
|
+
validate(
|
|
1481
|
+
validator: (value: ToJsonType<M>) => void
|
|
1482
|
+
): JSONColumnTypeDef<M>;
|
|
1483
|
+
}
|
|
1484
|
+
: {
|
|
1485
|
+
validate(
|
|
1486
|
+
validator: (value?: ToJsonType<M> | null) => void
|
|
1487
|
+
): JSONColumnTypeDef<M>;
|
|
1488
|
+
};
|
|
1489
|
+
type DateValidator<M> = M extends NotNull
|
|
1490
|
+
? {
|
|
1491
|
+
validate(
|
|
1492
|
+
validator: (value: string | Date) => void
|
|
1493
|
+
): DateColumnTypeDef<M>;
|
|
1494
|
+
}
|
|
1495
|
+
: {
|
|
1496
|
+
validate(
|
|
1497
|
+
validator: (value?: string | Date | null) => void
|
|
1498
|
+
): DateColumnTypeDef<M>;
|
|
1499
|
+
};
|
|
1500
|
+
|
|
1501
|
+
type DateWithTimeZoneValidator<M> = M extends NotNull
|
|
1502
|
+
? {
|
|
1503
|
+
validate(
|
|
1504
|
+
validator: (value: string | Date) => void
|
|
1505
|
+
): DateWithTimeZoneColumnTypeDef<M>;
|
|
1506
|
+
}
|
|
1507
|
+
: {
|
|
1508
|
+
validate(
|
|
1509
|
+
validator: (value?: string | Date | null) => void
|
|
1510
|
+
): DateWithTimeZoneColumnTypeDef<M>;
|
|
1511
|
+
};
|
|
1512
|
+
|
|
1513
|
+
type StringColumnTypeDef<M> = StringValidator<M> & {
|
|
1514
|
+
primary(): StringColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1515
|
+
notNull(): StringColumnTypeDef<M & NotNull> & NotNull;
|
|
1516
|
+
notNullExceptInsert(): StringColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1517
|
+
serializable(value: boolean): StringColumnTypeDef<M>;
|
|
1518
|
+
JSONSchema(schema: object, options?: Options): StringColumnTypeDef<M>;
|
|
1519
|
+
default(value: string | null | undefined | (() => string | null | undefined)): StringColumnTypeDef<M>;
|
|
1520
|
+
dbNull(value: string): StringColumnTypeDef<M>;
|
|
1521
|
+
} & ColumnTypeOf<StringColumnType<M>> &
|
|
1522
|
+
M;
|
|
1523
|
+
|
|
1524
|
+
type NumericColumnTypeDef<M> = NumericValidator<M> & {
|
|
1525
|
+
primary(): NumericColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1526
|
+
notNull(): NumericColumnTypeDef<M & NotNull> & NotNull;
|
|
1527
|
+
notNullExceptInsert(): NumericColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1528
|
+
serializable(value: boolean): NumericColumnTypeDef<M>;
|
|
1529
|
+
JSONSchema(schema: object, options?: Options): NumericColumnTypeDef<M>;
|
|
1530
|
+
default(value: number | null | undefined | (() => string | null | undefined)): NumericColumnTypeDef<M>;
|
|
1531
|
+
dbNull(value: number): NumericColumnTypeDef<M>;
|
|
1532
|
+
} & ColumnTypeOf<NumericColumnType<M>> &
|
|
1533
|
+
M;
|
|
1534
|
+
|
|
1535
|
+
type UuidColumnTypeDef<M> = UuidValidator<M> & {
|
|
1536
|
+
primary(): UuidColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1537
|
+
notNull(): UuidColumnTypeDef<M & NotNull> & NotNull;
|
|
1538
|
+
notNullExceptInsert(): UuidColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1539
|
+
serializable(value: boolean): UuidColumnTypeDef<M>;
|
|
1540
|
+
JSONSchema(schema: object, options?: Options): UuidColumnTypeDef<M>;
|
|
1541
|
+
default(value: string | null | undefined | (() => string | null | undefined)): UuidColumnTypeDef<M>;
|
|
1542
|
+
dbNull(value: string): UuidColumnTypeDef<M>;
|
|
1543
|
+
} & ColumnTypeOf<UuidColumnType<M>> &
|
|
1544
|
+
M;
|
|
1545
|
+
|
|
1546
|
+
type JSONColumnTypeDef<M> = JSONValidator<M> & {
|
|
1547
|
+
primary(): JSONColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1548
|
+
notNull(): JSONColumnTypeDef<M & NotNull> & NotNull;
|
|
1549
|
+
notNullExceptInsert(): JSONColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1550
|
+
serializable(value: boolean): JSONColumnTypeDef<M>;
|
|
1551
|
+
JSONSchema(schema: object, options?: Options): JSONColumnTypeDef<M>;
|
|
1552
|
+
default(value: ToJsonType<M> | null | undefined | (() => string | null | undefined)): JSONColumnTypeDef<M>;
|
|
1553
|
+
dbNull(value: ToJsonType<M>): JSONColumnTypeDef<M>;
|
|
1554
|
+
} & ColumnTypeOf<JSONColumnType<M>> &
|
|
1555
|
+
M;
|
|
1556
|
+
|
|
1557
|
+
type BinaryColumnTypeDef<M> = BinaryValidator<M> & {
|
|
1558
|
+
primary(): BinaryColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1559
|
+
notNull(): BinaryColumnTypeDef<M & NotNull> & NotNull;
|
|
1560
|
+
notNullExceptInsert(): BinaryColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1561
|
+
serializable(value: boolean): BinaryColumnTypeDef<M>;
|
|
1562
|
+
JSONSchema(schema: object, options?: Options): BinaryColumnTypeDef<M>;
|
|
1563
|
+
default(value: string | null | undefined | (() => string | null | undefined)): BinaryColumnTypeDef<M>;
|
|
1564
|
+
dbNull(value: string): BinaryColumnTypeDef<M>;
|
|
1565
|
+
} & ColumnTypeOf<BinaryColumnType<M>> &
|
|
1566
|
+
M;
|
|
1567
|
+
|
|
1568
|
+
type BooleanColumnTypeDef<M> = BooleanValidator<M> & {
|
|
1569
|
+
primary(): BooleanColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1570
|
+
notNull(): BooleanColumnTypeDef<M & NotNull> & NotNull;
|
|
1571
|
+
notNullExceptInsert(): BooleanColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1572
|
+
serializable(value: boolean): BooleanColumnTypeDef<M>;
|
|
1573
|
+
JSONSchema(schema: object, options?: Options): BooleanColumnTypeDef<M>;
|
|
1574
|
+
default(value: boolean | null | undefined | (() => string | null | undefined)): BooleanColumnTypeDef<M>;
|
|
1575
|
+
dbNull(value: boolean): BooleanColumnTypeDef<M>;
|
|
1576
|
+
} & ColumnTypeOf<BooleanColumnType<M>> &
|
|
1577
|
+
M;
|
|
1578
|
+
|
|
1579
|
+
type DateColumnTypeDef<M> = DateValidator<M> & {
|
|
1580
|
+
primary(): DateColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1581
|
+
notNull(): DateColumnTypeDef<M & NotNull> & NotNull;
|
|
1582
|
+
notNullExceptInsert(): DateColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1583
|
+
serializable(value: boolean): DateColumnTypeDef<M>;
|
|
1584
|
+
JSONSchema(schema: object, options?: Options): DateColumnTypeDef<M>;
|
|
1585
|
+
default(value: string | Date | null | undefined | (() => string | Date | null | undefined)): DateColumnTypeDef<M>;
|
|
1586
|
+
dbNull(value: String | Date): DateColumnTypeDef<M>;
|
|
1587
|
+
} & ColumnTypeOf<DateColumnType<M>> &
|
|
1588
|
+
M;
|
|
1589
|
+
|
|
1590
|
+
type DateWithTimeZoneColumnTypeDef<M> = DateValidator<M> & {
|
|
1591
|
+
primary(): DateWithTimeZoneColumnTypeDef<M & IsPrimary> & IsPrimary;
|
|
1592
|
+
notNull(): DateWithTimeZoneColumnTypeDef<M & NotNull> & NotNull;
|
|
1593
|
+
notNullExceptInsert(): DateWithTimeZoneColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
|
|
1594
|
+
serializable(value: boolean): DateWithTimeZoneColumnTypeDef<M>;
|
|
1595
|
+
JSONSchema(schema: object, options?: Options): DateWithTimeZoneColumnTypeDef<M>;
|
|
1596
|
+
default(value: string | Date | null | undefined | (() => string | Date | null | undefined)): DateWithTimeZoneColumnTypeDef<M>;
|
|
1597
|
+
dbNull(value: String | Date): DateWithTimeZoneColumnTypeDef<M>;
|
|
1598
|
+
} & ColumnTypeOf<DateWithTimeZoneColumnType<M>> &
|
|
1599
|
+
M;
|
|
1600
|
+
|
|
1601
|
+
interface ColumnTypeOf<T> {
|
|
1602
|
+
[' type']: T;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
type MapPropertiesTo1<T, V extends number = 1> = { [K in keyof T]: V };
|
|
1606
|
+
type MapPropertiesTo2<T, V extends number = 2> = {
|
|
1607
|
+
[K in keyof T]: UnionOfTypes<MapPropertiesTo1<Omit<T, K>, V>>;
|
|
1608
|
+
};
|
|
1609
|
+
type MapPropertiesTo3<T, V extends number = 3> = {
|
|
1610
|
+
[K in keyof T]: UnionOfTypes<MapPropertiesTo2<Omit<T, K>, V>>;
|
|
1611
|
+
};
|
|
1612
|
+
type MapPropertiesTo4<T, V extends number = 4> = {
|
|
1613
|
+
[K in keyof T]: UnionOfTypes<MapPropertiesTo3<Omit<T, K>, V>>;
|
|
1614
|
+
};
|
|
1615
|
+
type MapPropertiesTo5<T, V extends number = 5> = {
|
|
1616
|
+
[K in keyof T]: UnionOfTypes<MapPropertiesTo4<Omit<T, K>, V>>;
|
|
1617
|
+
};
|
|
1618
|
+
type MapPropertiesTo6<T, V extends number = 6> = {
|
|
1619
|
+
[K in keyof T]: UnionOfTypes<MapPropertiesTo5<Omit<T, K>, V>>;
|
|
1620
|
+
};
|
|
1621
|
+
type UnionOfTypes<T> = T[keyof T];
|
|
1622
|
+
|
|
1623
|
+
interface RawFilter {
|
|
1624
|
+
sql: string | (() => string);
|
|
1625
|
+
parameters?: any[];
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
interface Filter extends RawFilter {
|
|
1629
|
+
and(filter: RawFilter | RawFilter[], ...filters: RawFilter[]): Filter;
|
|
1630
|
+
or(filter: RawFilter | RawFilter[], ...filters: RawFilter[]): Filter;
|
|
1631
|
+
not(): Filter;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
type UnionToIntersection<U> = (
|
|
1635
|
+
U extends any ? (k: U) => void : never
|
|
1636
|
+
) extends (k: infer I) => void
|
|
1637
|
+
? I
|
|
1638
|
+
: never;
|
|
1639
|
+
|
|
1640
|
+
type PopFront<T extends any[]> = ((...t: T) => void) extends (
|
|
1641
|
+
_: any,
|
|
1642
|
+
...rest: infer R
|
|
1643
|
+
) => void
|
|
1644
|
+
? R
|
|
1645
|
+
: never;
|
|
1646
|
+
|
|
1647
|
+
type TupleToUnion<T extends any[]> = T extends (infer First)[]
|
|
1648
|
+
? First
|
|
1649
|
+
: T extends []
|
|
1650
|
+
? never
|
|
1651
|
+
: T extends [infer First, ...infer Rest]
|
|
1652
|
+
? First | TupleToUnion<Rest>
|
|
1653
|
+
: never;
|
|
1654
|
+
|
|
1655
|
+
type First<T extends any[]> = T extends [infer Target, ...any[]]
|
|
1656
|
+
? Target
|
|
1657
|
+
: never;
|
|
1658
|
+
|
|
1659
|
+
type UnionToTuple<T> = UnionToIntersection<
|
|
1660
|
+
T extends any ? (t: T) => void : never
|
|
1661
|
+
> extends (t: infer T1) => void
|
|
1662
|
+
? [...UnionToTuple<Exclude<T, T1>>, T1]
|
|
1663
|
+
: [];
|
|
1664
|
+
|
|
1665
|
+
type FirstOfUnion<T> = First<UnionToTuple<T>>;
|
|
1666
|
+
|
|
1667
|
+
type ToKeyObjects<T> = {
|
|
1668
|
+
[K in keyof T]: { name: K; value: T[K] };
|
|
1669
|
+
}[keyof T];
|
|
1670
|
+
|
|
1671
|
+
type ToKeys<T> = {
|
|
1672
|
+
[K in keyof T]: K;
|
|
1673
|
+
}[keyof T];
|
|
1674
|
+
|
|
1675
|
+
type GetKeys<T> = {
|
|
1676
|
+
[K in keyof T]: T[K];
|
|
1677
|
+
}[keyof T];
|
|
1678
|
+
|
|
1679
|
+
type ToUnionTuple<T> = UnionToTuple<ToKeyObjects<T>>;
|
|
1680
|
+
type PropertyToTuple<T> = FirstOfUnion<ToKeyObjects<T>>;
|
|
1681
|
+
|
|
1682
|
+
type PickProperty<T> = PropertyToTuple<T>;
|
|
1683
|
+
type PickProperty2<T> = FirstOfUnion<TupleToUnion<PopFront<ToUnionTuple<T>>>>;
|
|
1684
|
+
type PickProperty3<T> = FirstOfUnion<
|
|
1685
|
+
TupleToUnion<PopFront<PopFront<ToUnionTuple<T>>>>
|
|
1686
|
+
>;
|
|
1687
|
+
type PickProperty4<T> = FirstOfUnion<
|
|
1688
|
+
TupleToUnion<PopFront<PopFront<PopFront<ToUnionTuple<T>>>>>
|
|
1689
|
+
>;
|
|
1690
|
+
type PickProperty5<T> = FirstOfUnion<
|
|
1691
|
+
TupleToUnion<PopFront<PopFront<PopFront<PopFront<ToUnionTuple<T>>>>>>
|
|
1692
|
+
>;
|
|
1693
|
+
type PickProperty6<T> = FirstOfUnion<
|
|
1694
|
+
TupleToUnion<
|
|
1695
|
+
PopFront<PopFront<PopFront<PopFront<PopFront<ToUnionTuple<T>>>>>>
|
|
1696
|
+
>
|
|
1697
|
+
>;
|
|
1698
|
+
|
|
1699
|
+
type PickPropertyName1<T> = GetKeys<Omit<PickProperty<T>, 'value'>>;
|
|
1700
|
+
type PickPropertyName2<T> = GetKeys<Omit<PickProperty2<T>, 'value'>>;
|
|
1701
|
+
type PickPropertyName3<T> = GetKeys<Omit<PickProperty3<T>, 'value'>>;
|
|
1702
|
+
type PickPropertyName4<T> = GetKeys<Omit<PickProperty4<T>, 'value'>>;
|
|
1703
|
+
type PickPropertyName5<T> = GetKeys<Omit<PickProperty5<T>, 'value'>>;
|
|
1704
|
+
type PickPropertyName6<T> = GetKeys<Omit<PickProperty6<T>, 'value'>>;
|
|
1705
|
+
|
|
1706
|
+
type PickPropertyValue1<T> = GetKeys<Omit<PickProperty<T>, 'name'>>;
|
|
1707
|
+
type PickPropertyValue2<T> = GetKeys<Omit<PickProperty2<T>, 'name'>>;
|
|
1708
|
+
type PickPropertyValue3<T> = GetKeys<Omit<PickProperty3<T>, 'name'>>;
|
|
1709
|
+
type PickPropertyValue4<T> = GetKeys<Omit<PickProperty4<T>, 'name'>>;
|
|
1710
|
+
type PickPropertyValue5<T> = GetKeys<Omit<PickProperty5<T>, 'name'>>;
|
|
1711
|
+
type PickPropertyValue6<T> = GetKeys<Omit<PickProperty6<T>, 'name'>>;
|
|
1712
|
+
|
|
1713
|
+
type CountProperties<T> = CountPropertiesHelper<UnionToTuple<ToKeys<T>>>;
|
|
1714
|
+
type CountPropertiesHelper<
|
|
1715
|
+
T extends any[],
|
|
1716
|
+
C extends number = 0
|
|
1717
|
+
> = T extends [] ? C : CountPropertiesHelper<PopFront<T>, Increment<C>>;
|
|
1718
|
+
|
|
1719
|
+
type Increment<C extends number> = C extends 0
|
|
1720
|
+
? 1
|
|
1721
|
+
: C extends 1
|
|
1722
|
+
? 2
|
|
1723
|
+
: C extends 2
|
|
1724
|
+
? 3
|
|
1725
|
+
: C extends 3
|
|
1726
|
+
? 4
|
|
1727
|
+
: C extends 4
|
|
1728
|
+
? 5
|
|
1729
|
+
: 0;
|