joist-orm 1.293.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{drivers/PostgresDriver.d.ts → PostgresDriver.d.ts} +1 -4
- package/build/PostgresDriver.d.ts.map +1 -0
- package/build/{drivers/PostgresDriver.js → PostgresDriver.js} +49 -58
- package/build/PostgresDriver.js.map +1 -0
- package/build/codegen.d.ts +2 -0
- package/build/codegen.d.ts.map +1 -0
- package/build/codegen.js +29 -0
- package/build/codegen.js.map +1 -0
- package/build/graphql-codegen-export.d.ts +2 -0
- package/build/graphql-codegen-export.d.ts.map +1 -0
- package/build/{drivers/index.js → graphql-codegen-export.js} +3 -5
- package/build/graphql-codegen-export.js.map +1 -0
- package/build/graphql-export.d.ts +2 -0
- package/build/graphql-export.d.ts.map +1 -0
- package/build/graphql-export.js +19 -0
- package/build/graphql-export.js.map +1 -0
- package/build/index.d.ts +3 -127
- package/build/index.d.ts.map +1 -1
- package/build/index.js +8 -282
- package/build/index.js.map +1 -1
- package/build/knex-export.d.ts +2 -0
- package/build/knex-export.d.ts.map +1 -0
- package/build/knex-export.js +19 -0
- package/build/knex-export.js.map +1 -0
- package/build/pg-migrate.d.ts +2 -0
- package/build/pg-migrate.d.ts.map +1 -0
- package/build/pg-migrate.js +30 -0
- package/build/pg-migrate.js.map +1 -0
- package/build/postgres-driver.d.ts +2 -0
- package/build/postgres-driver.d.ts.map +1 -0
- package/build/postgres-driver.js +7 -0
- package/build/postgres-driver.js.map +1 -0
- package/build/tests-export.d.ts +2 -0
- package/build/tests-export.d.ts.map +1 -0
- package/build/tests-export.js +19 -0
- package/build/tests-export.js.map +1 -0
- package/build/trusted.d.ts +5 -0
- package/build/trusted.d.ts.map +1 -0
- package/build/trusted.js +15 -0
- package/build/trusted.js.map +1 -0
- package/package.json +85 -16
- package/build/AliasAssigner.d.ts +0 -7
- package/build/AliasAssigner.d.ts.map +0 -1
- package/build/AliasAssigner.js +0 -30
- package/build/AliasAssigner.js.map +0 -1
- package/build/Aliases.d.ts +0 -110
- package/build/Aliases.d.ts.map +0 -1
- package/build/Aliases.js +0 -456
- package/build/Aliases.js.map +0 -1
- package/build/BaseEntity.d.ts +0 -66
- package/build/BaseEntity.d.ts.map +0 -1
- package/build/BaseEntity.js +0 -120
- package/build/BaseEntity.js.map +0 -1
- package/build/ConditionBuilder.d.ts +0 -50
- package/build/ConditionBuilder.d.ts.map +0 -1
- package/build/ConditionBuilder.js +0 -178
- package/build/ConditionBuilder.js.map +0 -1
- package/build/Entity.d.ts +0 -38
- package/build/Entity.d.ts.map +0 -1
- package/build/Entity.js +0 -8
- package/build/Entity.js.map +0 -1
- package/build/EntityFields.d.ts +0 -37
- package/build/EntityFields.d.ts.map +0 -1
- package/build/EntityFields.js +0 -3
- package/build/EntityFields.js.map +0 -1
- package/build/EntityFilter.d.ts +0 -113
- package/build/EntityFilter.d.ts.map +0 -1
- package/build/EntityFilter.js +0 -3
- package/build/EntityFilter.js.map +0 -1
- package/build/EntityGraphQLFilter.d.ts +0 -51
- package/build/EntityGraphQLFilter.d.ts.map +0 -1
- package/build/EntityGraphQLFilter.js +0 -54
- package/build/EntityGraphQLFilter.js.map +0 -1
- package/build/EntityManager.d.ts +0 -734
- package/build/EntityManager.d.ts.map +0 -1
- package/build/EntityManager.js +0 -2069
- package/build/EntityManager.js.map +0 -1
- package/build/EntityMetadata.d.ts +0 -185
- package/build/EntityMetadata.d.ts.map +0 -1
- package/build/EntityMetadata.js +0 -61
- package/build/EntityMetadata.js.map +0 -1
- package/build/EnumMetadata.d.ts +0 -15
- package/build/EnumMetadata.d.ts.map +0 -1
- package/build/EnumMetadata.js +0 -3
- package/build/EnumMetadata.js.map +0 -1
- package/build/FlushLock.d.ts +0 -26
- package/build/FlushLock.d.ts.map +0 -1
- package/build/FlushLock.js +0 -57
- package/build/FlushLock.js.map +0 -1
- package/build/HintTree.d.ts +0 -42
- package/build/HintTree.d.ts.map +0 -1
- package/build/HintTree.js +0 -64
- package/build/HintTree.js.map +0 -1
- package/build/IndexManager.d.ts +0 -30
- package/build/IndexManager.d.ts.map +0 -1
- package/build/IndexManager.js +0 -206
- package/build/IndexManager.js.map +0 -1
- package/build/InstanceData.d.ts +0 -59
- package/build/InstanceData.d.ts.map +0 -1
- package/build/InstanceData.js +0 -162
- package/build/InstanceData.js.map +0 -1
- package/build/IsLoadedCache.d.ts +0 -32
- package/build/IsLoadedCache.d.ts.map +0 -1
- package/build/IsLoadedCache.js +0 -80
- package/build/IsLoadedCache.js.map +0 -1
- package/build/JoinRows.d.ts +0 -75
- package/build/JoinRows.d.ts.map +0 -1
- package/build/JoinRows.js +0 -246
- package/build/JoinRows.js.map +0 -1
- package/build/PluginManager.d.ts +0 -90
- package/build/PluginManager.d.ts.map +0 -1
- package/build/PluginManager.js +0 -97
- package/build/PluginManager.js.map +0 -1
- package/build/QueryParser.d.ts +0 -271
- package/build/QueryParser.d.ts.map +0 -1
- package/build/QueryParser.js +0 -853
- package/build/QueryParser.js.map +0 -1
- package/build/QueryParser.pruning.d.ts +0 -5
- package/build/QueryParser.pruning.d.ts.map +0 -1
- package/build/QueryParser.pruning.js +0 -118
- package/build/QueryParser.pruning.js.map +0 -1
- package/build/QueryVisitor.d.ts +0 -19
- package/build/QueryVisitor.d.ts.map +0 -1
- package/build/QueryVisitor.js +0 -84
- package/build/QueryVisitor.js.map +0 -1
- package/build/ReactionsManager.d.ts +0 -84
- package/build/ReactionsManager.d.ts.map +0 -1
- package/build/ReactionsManager.js +0 -307
- package/build/ReactionsManager.js.map +0 -1
- package/build/Todo.d.ts +0 -31
- package/build/Todo.d.ts.map +0 -1
- package/build/Todo.js +0 -73
- package/build/Todo.js.map +0 -1
- package/build/caches.d.ts +0 -6
- package/build/caches.d.ts.map +0 -1
- package/build/caches.js +0 -42
- package/build/caches.js.map +0 -1
- package/build/changes.d.ts +0 -79
- package/build/changes.d.ts.map +0 -1
- package/build/changes.js +0 -251
- package/build/changes.js.map +0 -1
- package/build/config.d.ts +0 -237
- package/build/config.d.ts.map +0 -1
- package/build/config.js +0 -298
- package/build/config.js.map +0 -1
- package/build/config.test.d.ts +0 -2
- package/build/config.test.d.ts.map +0 -1
- package/build/config.test.js +0 -53
- package/build/config.test.js.map +0 -1
- package/build/configure.d.ts +0 -13
- package/build/configure.d.ts.map +0 -1
- package/build/configure.js +0 -329
- package/build/configure.js.map +0 -1
- package/build/dataloaders/findByUniqueDataLoader.d.ts +0 -7
- package/build/dataloaders/findByUniqueDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findByUniqueDataLoader.js +0 -47
- package/build/dataloaders/findByUniqueDataLoader.js.map +0 -1
- package/build/dataloaders/findCountDataLoader.d.ts +0 -7
- package/build/dataloaders/findCountDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findCountDataLoader.js +0 -74
- package/build/dataloaders/findCountDataLoader.js.map +0 -1
- package/build/dataloaders/findDataLoader.d.ts +0 -37
- package/build/dataloaders/findDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findDataLoader.js +0 -337
- package/build/dataloaders/findDataLoader.js.map +0 -1
- package/build/dataloaders/findIdsDataLoader.d.ts +0 -7
- package/build/dataloaders/findIdsDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findIdsDataLoader.js +0 -74
- package/build/dataloaders/findIdsDataLoader.js.map +0 -1
- package/build/dataloaders/findOrCreateDataLoader.d.ts +0 -13
- package/build/dataloaders/findOrCreateDataLoader.d.ts.map +0 -1
- package/build/dataloaders/findOrCreateDataLoader.js +0 -174
- package/build/dataloaders/findOrCreateDataLoader.js.map +0 -1
- package/build/dataloaders/lensDataLoader.d.ts +0 -12
- package/build/dataloaders/lensDataLoader.d.ts.map +0 -1
- package/build/dataloaders/lensDataLoader.js +0 -180
- package/build/dataloaders/lensDataLoader.js.map +0 -1
- package/build/dataloaders/loadDataLoader.d.ts +0 -11
- package/build/dataloaders/loadDataLoader.d.ts.map +0 -1
- package/build/dataloaders/loadDataLoader.js +0 -54
- package/build/dataloaders/loadDataLoader.js.map +0 -1
- package/build/dataloaders/manyToManyDataLoader.d.ts +0 -8
- package/build/dataloaders/manyToManyDataLoader.d.ts.map +0 -1
- package/build/dataloaders/manyToManyDataLoader.js +0 -74
- package/build/dataloaders/manyToManyDataLoader.js.map +0 -1
- package/build/dataloaders/manyToManyFindDataLoader.d.ts +0 -8
- package/build/dataloaders/manyToManyFindDataLoader.d.ts.map +0 -1
- package/build/dataloaders/manyToManyFindDataLoader.js +0 -70
- package/build/dataloaders/manyToManyFindDataLoader.js.map +0 -1
- package/build/dataloaders/oneToManyDataLoader.d.ts +0 -7
- package/build/dataloaders/oneToManyDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToManyDataLoader.js +0 -60
- package/build/dataloaders/oneToManyDataLoader.js.map +0 -1
- package/build/dataloaders/oneToManyFindDataLoader.d.ts +0 -8
- package/build/dataloaders/oneToManyFindDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToManyFindDataLoader.js +0 -71
- package/build/dataloaders/oneToManyFindDataLoader.js.map +0 -1
- package/build/dataloaders/oneToOneDataLoader.d.ts +0 -7
- package/build/dataloaders/oneToOneDataLoader.d.ts.map +0 -1
- package/build/dataloaders/oneToOneDataLoader.js +0 -59
- package/build/dataloaders/oneToOneDataLoader.js.map +0 -1
- package/build/dataloaders/populateDataLoader.d.ts +0 -13
- package/build/dataloaders/populateDataLoader.d.ts.map +0 -1
- package/build/dataloaders/populateDataLoader.js +0 -148
- package/build/dataloaders/populateDataLoader.js.map +0 -1
- package/build/dataloaders/recursiveChildrenDataLoader.d.ts +0 -7
- package/build/dataloaders/recursiveChildrenDataLoader.d.ts.map +0 -1
- package/build/dataloaders/recursiveChildrenDataLoader.js +0 -77
- package/build/dataloaders/recursiveChildrenDataLoader.js.map +0 -1
- package/build/dataloaders/recursiveParentsDataLoader.d.ts +0 -7
- package/build/dataloaders/recursiveParentsDataLoader.d.ts.map +0 -1
- package/build/dataloaders/recursiveParentsDataLoader.js +0 -59
- package/build/dataloaders/recursiveParentsDataLoader.js.map +0 -1
- package/build/defaults.d.ts +0 -54
- package/build/defaults.d.ts.map +0 -1
- package/build/defaults.js +0 -282
- package/build/defaults.js.map +0 -1
- package/build/driverApi.d.ts +0 -19
- package/build/driverApi.d.ts.map +0 -1
- package/build/driverApi.js +0 -17
- package/build/driverApi.js.map +0 -1
- package/build/drivers/Driver.d.ts +0 -26
- package/build/drivers/Driver.d.ts.map +0 -1
- package/build/drivers/Driver.js +0 -3
- package/build/drivers/Driver.js.map +0 -1
- package/build/drivers/EntityWriter.d.ts +0 -64
- package/build/drivers/EntityWriter.d.ts.map +0 -1
- package/build/drivers/EntityWriter.js +0 -237
- package/build/drivers/EntityWriter.js.map +0 -1
- package/build/drivers/IdAssigner.d.ts +0 -50
- package/build/drivers/IdAssigner.d.ts.map +0 -1
- package/build/drivers/IdAssigner.js +0 -133
- package/build/drivers/IdAssigner.js.map +0 -1
- package/build/drivers/PostgresDriver.d.ts.map +0 -1
- package/build/drivers/PostgresDriver.js.map +0 -1
- package/build/drivers/buildRawQuery.d.ts +0 -20
- package/build/drivers/buildRawQuery.d.ts.map +0 -1
- package/build/drivers/buildRawQuery.js +0 -148
- package/build/drivers/buildRawQuery.js.map +0 -1
- package/build/drivers/buildUtils.d.ts +0 -4
- package/build/drivers/buildUtils.d.ts.map +0 -1
- package/build/drivers/buildUtils.js +0 -79
- package/build/drivers/buildUtils.js.map +0 -1
- package/build/drivers/index.d.ts +0 -5
- package/build/drivers/index.d.ts.map +0 -1
- package/build/drivers/index.js.map +0 -1
- package/build/fields.d.ts +0 -24
- package/build/fields.d.ts.map +0 -1
- package/build/fields.js +0 -161
- package/build/fields.js.map +0 -1
- package/build/getProperties.d.ts +0 -28
- package/build/getProperties.d.ts.map +0 -1
- package/build/getProperties.js +0 -141
- package/build/getProperties.js.map +0 -1
- package/build/json.d.ts +0 -77
- package/build/json.d.ts.map +0 -1
- package/build/json.js +0 -116
- package/build/json.js.map +0 -1
- package/build/k.d.ts +0 -2
- package/build/k.d.ts.map +0 -1
- package/build/k.js +0 -9
- package/build/k.js.map +0 -1
- package/build/keys.d.ts +0 -49
- package/build/keys.d.ts.map +0 -1
- package/build/keys.js +0 -195
- package/build/keys.js.map +0 -1
- package/build/keywords.d.ts +0 -5
- package/build/keywords.d.ts.map +0 -1
- package/build/keywords.js +0 -124
- package/build/keywords.js.map +0 -1
- package/build/loadHints.d.ts +0 -112
- package/build/loadHints.d.ts.map +0 -1
- package/build/loadHints.js +0 -75
- package/build/loadHints.js.map +0 -1
- package/build/loadLens.d.ts +0 -66
- package/build/loadLens.d.ts.map +0 -1
- package/build/loadLens.js +0 -287
- package/build/loadLens.js.map +0 -1
- package/build/logging/FactoryLogger.d.ts +0 -24
- package/build/logging/FactoryLogger.d.ts.map +0 -1
- package/build/logging/FactoryLogger.js +0 -77
- package/build/logging/FactoryLogger.js.map +0 -1
- package/build/logging/FieldLogger.d.ts +0 -27
- package/build/logging/FieldLogger.d.ts.map +0 -1
- package/build/logging/FieldLogger.js +0 -69
- package/build/logging/FieldLogger.js.map +0 -1
- package/build/logging/ReactionLogger.d.ts +0 -23
- package/build/logging/ReactionLogger.d.ts.map +0 -1
- package/build/logging/ReactionLogger.js +0 -65
- package/build/logging/ReactionLogger.js.map +0 -1
- package/build/newEntity.d.ts +0 -45
- package/build/newEntity.d.ts.map +0 -1
- package/build/newEntity.js +0 -106
- package/build/newEntity.js.map +0 -1
- package/build/newTestInstance.d.ts +0 -193
- package/build/newTestInstance.d.ts.map +0 -1
- package/build/newTestInstance.js +0 -738
- package/build/newTestInstance.js.map +0 -1
- package/build/normalizeHints.d.ts +0 -16
- package/build/normalizeHints.d.ts.map +0 -1
- package/build/normalizeHints.js +0 -31
- package/build/normalizeHints.js.map +0 -1
- package/build/plugins/ImmutableEntitiesPlugin.d.ts +0 -9
- package/build/plugins/ImmutableEntitiesPlugin.d.ts.map +0 -1
- package/build/plugins/ImmutableEntitiesPlugin.js +0 -21
- package/build/plugins/ImmutableEntitiesPlugin.js.map +0 -1
- package/build/plugins/PreloadPlugin.d.ts +0 -69
- package/build/plugins/PreloadPlugin.d.ts.map +0 -1
- package/build/plugins/PreloadPlugin.js +0 -3
- package/build/plugins/PreloadPlugin.js.map +0 -1
- package/build/preloading/JsonAggregatePreloader.d.ts +0 -16
- package/build/preloading/JsonAggregatePreloader.d.ts.map +0 -1
- package/build/preloading/JsonAggregatePreloader.js +0 -238
- package/build/preloading/JsonAggregatePreloader.js.map +0 -1
- package/build/preloading/canPreload.d.ts +0 -3
- package/build/preloading/canPreload.d.ts.map +0 -1
- package/build/preloading/canPreload.js +0 -21
- package/build/preloading/canPreload.js.map +0 -1
- package/build/preloading/partitionHint.d.ts +0 -5
- package/build/preloading/partitionHint.d.ts.map +0 -1
- package/build/preloading/partitionHint.js +0 -56
- package/build/preloading/partitionHint.js.map +0 -1
- package/build/reactiveHints.d.ts +0 -129
- package/build/reactiveHints.d.ts.map +0 -1
- package/build/reactiveHints.js +0 -458
- package/build/reactiveHints.js.map +0 -1
- package/build/relations/AbstractPropertyImpl.d.ts +0 -8
- package/build/relations/AbstractPropertyImpl.d.ts.map +0 -1
- package/build/relations/AbstractPropertyImpl.js +0 -15
- package/build/relations/AbstractPropertyImpl.js.map +0 -1
- package/build/relations/AbstractRelationImpl.d.ts +0 -36
- package/build/relations/AbstractRelationImpl.d.ts.map +0 -1
- package/build/relations/AbstractRelationImpl.js +0 -19
- package/build/relations/AbstractRelationImpl.js.map +0 -1
- package/build/relations/Collection.d.ts +0 -28
- package/build/relations/Collection.d.ts.map +0 -1
- package/build/relations/Collection.js +0 -18
- package/build/relations/Collection.js.map +0 -1
- package/build/relations/CustomCollection.d.ts +0 -69
- package/build/relations/CustomCollection.d.ts.map +0 -1
- package/build/relations/CustomCollection.js +0 -166
- package/build/relations/CustomCollection.js.map +0 -1
- package/build/relations/CustomReference.d.ts +0 -71
- package/build/relations/CustomReference.d.ts.map +0 -1
- package/build/relations/CustomReference.js +0 -152
- package/build/relations/CustomReference.js.map +0 -1
- package/build/relations/LargeCollection.d.ts +0 -19
- package/build/relations/LargeCollection.d.ts.map +0 -1
- package/build/relations/LargeCollection.js +0 -3
- package/build/relations/LargeCollection.js.map +0 -1
- package/build/relations/ManyToManyCollection.d.ts +0 -44
- package/build/relations/ManyToManyCollection.d.ts.map +0 -1
- package/build/relations/ManyToManyCollection.js +0 -268
- package/build/relations/ManyToManyCollection.js.map +0 -1
- package/build/relations/ManyToManyLargeCollection.d.ts +0 -30
- package/build/relations/ManyToManyLargeCollection.d.ts.map +0 -1
- package/build/relations/ManyToManyLargeCollection.js +0 -119
- package/build/relations/ManyToManyLargeCollection.js.map +0 -1
- package/build/relations/ManyToOneReference.d.ts +0 -121
- package/build/relations/ManyToOneReference.d.ts.map +0 -1
- package/build/relations/ManyToOneReference.js +0 -389
- package/build/relations/ManyToOneReference.js.map +0 -1
- package/build/relations/OneToManyCollection.d.ts +0 -58
- package/build/relations/OneToManyCollection.d.ts.map +0 -1
- package/build/relations/OneToManyCollection.js +0 -347
- package/build/relations/OneToManyCollection.js.map +0 -1
- package/build/relations/OneToManyLargeCollection.d.ts +0 -26
- package/build/relations/OneToManyLargeCollection.d.ts.map +0 -1
- package/build/relations/OneToManyLargeCollection.js +0 -102
- package/build/relations/OneToManyLargeCollection.js.map +0 -1
- package/build/relations/OneToOneReference.d.ts +0 -93
- package/build/relations/OneToOneReference.d.ts.map +0 -1
- package/build/relations/OneToOneReference.js +0 -228
- package/build/relations/OneToOneReference.js.map +0 -1
- package/build/relations/PolymorphicReference.d.ts +0 -89
- package/build/relations/PolymorphicReference.d.ts.map +0 -1
- package/build/relations/PolymorphicReference.js +0 -244
- package/build/relations/PolymorphicReference.js.map +0 -1
- package/build/relations/ReactiveField.d.ts +0 -87
- package/build/relations/ReactiveField.d.ts.map +0 -1
- package/build/relations/ReactiveField.js +0 -149
- package/build/relations/ReactiveField.js.map +0 -1
- package/build/relations/ReactiveGetter.d.ts +0 -30
- package/build/relations/ReactiveGetter.d.ts.map +0 -1
- package/build/relations/ReactiveGetter.js +0 -38
- package/build/relations/ReactiveGetter.js.map +0 -1
- package/build/relations/ReactiveManyToMany.d.ts +0 -56
- package/build/relations/ReactiveManyToMany.d.ts.map +0 -1
- package/build/relations/ReactiveManyToMany.js +0 -243
- package/build/relations/ReactiveManyToMany.js.map +0 -1
- package/build/relations/ReactiveManyToManyOtherSide.d.ts +0 -47
- package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +0 -1
- package/build/relations/ReactiveManyToManyOtherSide.js +0 -155
- package/build/relations/ReactiveManyToManyOtherSide.js.map +0 -1
- package/build/relations/ReactiveQueryField.d.ts +0 -41
- package/build/relations/ReactiveQueryField.d.ts.map +0 -1
- package/build/relations/ReactiveQueryField.js +0 -125
- package/build/relations/ReactiveQueryField.js.map +0 -1
- package/build/relations/ReactiveReference.d.ts +0 -119
- package/build/relations/ReactiveReference.d.ts.map +0 -1
- package/build/relations/ReactiveReference.js +0 -333
- package/build/relations/ReactiveReference.js.map +0 -1
- package/build/relations/ReadOnlyCollection.d.ts +0 -19
- package/build/relations/ReadOnlyCollection.d.ts.map +0 -1
- package/build/relations/ReadOnlyCollection.js +0 -15
- package/build/relations/ReadOnlyCollection.js.map +0 -1
- package/build/relations/RecursiveCollection.d.ts +0 -84
- package/build/relations/RecursiveCollection.d.ts.map +0 -1
- package/build/relations/RecursiveCollection.js +0 -296
- package/build/relations/RecursiveCollection.js.map +0 -1
- package/build/relations/Reference.d.ts +0 -35
- package/build/relations/Reference.d.ts.map +0 -1
- package/build/relations/Reference.js +0 -21
- package/build/relations/Reference.js.map +0 -1
- package/build/relations/Relation.d.ts +0 -14
- package/build/relations/Relation.d.ts.map +0 -1
- package/build/relations/Relation.js +0 -12
- package/build/relations/Relation.js.map +0 -1
- package/build/relations/hasAsyncMethod.d.ts +0 -27
- package/build/relations/hasAsyncMethod.d.ts.map +0 -1
- package/build/relations/hasAsyncMethod.js +0 -47
- package/build/relations/hasAsyncMethod.js.map +0 -1
- package/build/relations/hasAsyncProperty.d.ts +0 -49
- package/build/relations/hasAsyncProperty.d.ts.map +0 -1
- package/build/relations/hasAsyncProperty.js +0 -98
- package/build/relations/hasAsyncProperty.js.map +0 -1
- package/build/relations/hasManyDerived.d.ts +0 -22
- package/build/relations/hasManyDerived.d.ts.map +0 -1
- package/build/relations/hasManyDerived.js +0 -32
- package/build/relations/hasManyDerived.js.map +0 -1
- package/build/relations/hasManyThrough.d.ts +0 -10
- package/build/relations/hasManyThrough.d.ts.map +0 -1
- package/build/relations/hasManyThrough.js +0 -24
- package/build/relations/hasManyThrough.js.map +0 -1
- package/build/relations/hasOneDerived.d.ts +0 -12
- package/build/relations/hasOneDerived.d.ts.map +0 -1
- package/build/relations/hasOneDerived.js +0 -24
- package/build/relations/hasOneDerived.js.map +0 -1
- package/build/relations/hasOneThrough.d.ts +0 -10
- package/build/relations/hasOneThrough.d.ts.map +0 -1
- package/build/relations/hasOneThrough.js +0 -24
- package/build/relations/hasOneThrough.js.map +0 -1
- package/build/relations/index.d.ts +0 -28
- package/build/relations/index.d.ts.map +0 -1
- package/build/relations/index.js +0 -88
- package/build/relations/index.js.map +0 -1
- package/build/rules.d.ts +0 -123
- package/build/rules.d.ts.map +0 -1
- package/build/rules.js +0 -231
- package/build/rules.js.map +0 -1
- package/build/runtimeConfig.d.ts +0 -17
- package/build/runtimeConfig.d.ts.map +0 -1
- package/build/runtimeConfig.js +0 -18
- package/build/runtimeConfig.js.map +0 -1
- package/build/serde.d.ts +0 -277
- package/build/serde.d.ts.map +0 -1
- package/build/serde.js +0 -517
- package/build/serde.js.map +0 -1
- package/build/temporal.d.ts +0 -16
- package/build/temporal.d.ts.map +0 -1
- package/build/temporal.js +0 -48
- package/build/temporal.js.map +0 -1
- package/build/temporalMappers.d.ts +0 -25
- package/build/temporalMappers.d.ts.map +0 -1
- package/build/temporalMappers.js +0 -59
- package/build/temporalMappers.js.map +0 -1
- package/build/typeMap.d.ts +0 -68
- package/build/typeMap.d.ts.map +0 -1
- package/build/typeMap.js +0 -3
- package/build/typeMap.js.map +0 -1
- package/build/unnest.d.ts +0 -13
- package/build/unnest.d.ts.map +0 -1
- package/build/unnest.js +0 -85
- package/build/unnest.js.map +0 -1
- package/build/upsert.d.ts +0 -42
- package/build/upsert.d.ts.map +0 -1
- package/build/upsert.js +0 -265
- package/build/upsert.js.map +0 -1
- package/build/utils.d.ts +0 -58
- package/build/utils.d.ts.map +0 -1
- package/build/utils.js +0 -236
- package/build/utils.js.map +0 -1
- package/build/withLoaded.d.ts +0 -56
- package/build/withLoaded.d.ts.map +0 -1
- package/build/withLoaded.js +0 -76
- package/build/withLoaded.js.map +0 -1
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateOps = generateOps;
|
|
4
|
-
const BaseEntity_1 = require("../BaseEntity");
|
|
5
|
-
const EntityMetadata_1 = require("../EntityMetadata");
|
|
6
|
-
const fields_1 = require("../fields");
|
|
7
|
-
const keys_1 = require("../keys");
|
|
8
|
-
const serde_1 = require("../serde");
|
|
9
|
-
const utils_1 = require("../utils");
|
|
10
|
-
/**
|
|
11
|
-
* Builds AST-ish `Ops` for the inserts/updates/deletes in `todos`.
|
|
12
|
-
*
|
|
13
|
-
* This helps decouple the database-specific driver/library from the knowledge
|
|
14
|
-
* of turning entities into table operations, i.e. so they can be unaware of
|
|
15
|
-
* complexities like field -> column mapping, oplocks, and class table inheritance.
|
|
16
|
-
*
|
|
17
|
-
* We still assume Postgres b/c we assume all ids have been pre-assigned for INSERTs,
|
|
18
|
-
* and don't do any topological sorting of cross-row FK dependencies.
|
|
19
|
-
*
|
|
20
|
-
* But this should let us experiment with knex vs. raw client/etc.
|
|
21
|
-
*/
|
|
22
|
-
function generateOps(todos) {
|
|
23
|
-
const ops = { inserts: [], updates: [], deletes: [] };
|
|
24
|
-
const fixups = [];
|
|
25
|
-
// Would be nice to conditionally sort
|
|
26
|
-
const sorted = Object.values(todos).sort((a, b) => (a.metadata.nonDeferredFkOrder ?? 0) - (b.metadata.nonDeferredFkOrder ?? 0));
|
|
27
|
-
for (const todo of sorted) {
|
|
28
|
-
addInserts(ops, todo, fixups);
|
|
29
|
-
addUpdates(ops, todo);
|
|
30
|
-
addDeletes(ops, todo);
|
|
31
|
-
}
|
|
32
|
-
if (fixups.length > 0)
|
|
33
|
-
translateFixupsIntoUpdates(ops, fixups);
|
|
34
|
-
return ops;
|
|
35
|
-
}
|
|
36
|
-
function addInserts(ops, todo, fixups) {
|
|
37
|
-
if (todo.inserts.length > 0) {
|
|
38
|
-
// If we have subtypes, this todo.metadata will always be the base type
|
|
39
|
-
const meta = todo.metadata;
|
|
40
|
-
if (meta.subTypes.length > 0) {
|
|
41
|
-
if (meta.inheritanceType === "cti") {
|
|
42
|
-
// Insert into each of the CTI tables
|
|
43
|
-
for (const [meta, group] of groupEntitiesByTable(todo.inserts)) {
|
|
44
|
-
ops.inserts.push(newInsertOp(meta, group, fixups));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (meta.inheritanceType === "sti") {
|
|
48
|
-
ops.inserts.push(newStiInsertOp(meta, todo.inserts, fixups));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
throw new Error(`Found ${meta.tableName} subTypes without a known inheritanceType ${meta.inheritanceType}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
ops.inserts.push(newInsertOp(meta, todo.inserts, fixups));
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function newInsertOp(meta, entities, fixups) {
|
|
60
|
-
// Purposefully use `meta.fields` instead of `allFields` b/c each CTI table has its own `InsertOp`
|
|
61
|
-
const columns = Object.values(meta.fields)
|
|
62
|
-
.filter(serde_1.hasSerde)
|
|
63
|
-
.flatMap((f) => f.serde.columns);
|
|
64
|
-
const columnValues = collectBindings(entities, meta.tableName, columns, fixups);
|
|
65
|
-
return { tableName: meta.tableName, columns, columnValues };
|
|
66
|
-
}
|
|
67
|
-
function newStiInsertOp(root, entities, fixups) {
|
|
68
|
-
// Get the unique set of subtypes
|
|
69
|
-
const subTypes = new Set();
|
|
70
|
-
for (const e of entities)
|
|
71
|
-
subTypes.add((0, EntityMetadata_1.getMetadata)(e));
|
|
72
|
-
// All the root fields (including id)
|
|
73
|
-
const fields = Object.values(root.fields);
|
|
74
|
-
// Then the subtype fields that haven't been seen yet (subtypes have the root fields + can share non-root fields)
|
|
75
|
-
for (const st of subTypes) {
|
|
76
|
-
for (const f of Object.values(st.fields)) {
|
|
77
|
-
if (!fields.some((f2) => f2.fieldName === f.fieldName)) {
|
|
78
|
-
fields.push(f);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
const columns = fields.filter(serde_1.hasSerde).flatMap((f) => f.serde.columns);
|
|
83
|
-
// And then collect the same bindings across each STI
|
|
84
|
-
const columnValues = collectBindings(entities, root.tableName, columns, fixups);
|
|
85
|
-
return { tableName: root.tableName, columns, columnValues };
|
|
86
|
-
}
|
|
87
|
-
function addUpdates(ops, todo) {
|
|
88
|
-
if (todo.updates.length > 0) {
|
|
89
|
-
const meta = todo.metadata;
|
|
90
|
-
if (meta.subTypes.length > 0) {
|
|
91
|
-
if (meta.inheritanceType === "cti") {
|
|
92
|
-
for (const [meta, group] of groupEntitiesByTable(todo.updates)) {
|
|
93
|
-
const op = newUpdateOp(meta, group);
|
|
94
|
-
if (op)
|
|
95
|
-
ops.updates.push(op);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else if (meta.inheritanceType === "sti") {
|
|
99
|
-
const op = newUpdateOp(meta, todo.updates);
|
|
100
|
-
if (op)
|
|
101
|
-
ops.updates.push(op);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
throw new Error(`Found ${meta.tableName} subTypes without a known inheritanceType ${meta.inheritanceType}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
const op = newUpdateOp(meta, todo.updates);
|
|
109
|
-
if (op)
|
|
110
|
-
ops.updates.push(op);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function newUpdateOp(meta, entities) {
|
|
115
|
-
// We only include changed fields in our `UPDATE`--maybe we could change this
|
|
116
|
-
// to always use the same fields, to take advantage of Prepared Statements.
|
|
117
|
-
const changedFields = new Set();
|
|
118
|
-
for (const entity of entities) {
|
|
119
|
-
for (const fieldName of (0, BaseEntity_1.getInstanceData)(entity).changedFields)
|
|
120
|
-
changedFields.add(fieldName);
|
|
121
|
-
}
|
|
122
|
-
// Sometimes with derived fields, an instance will be marked as an update, but if the derived field hasn't
|
|
123
|
-
// actually changed, it'll be a noop, so just short-circuit if it looks like that happened. Unless touched.
|
|
124
|
-
if (changedFields.size === 0 && !entities.some((e) => (0, BaseEntity_1.getInstanceData)(e).isTouched)) {
|
|
125
|
-
return undefined;
|
|
126
|
-
}
|
|
127
|
-
// We may have loaded a1 and a2, and changed a1.firstName, and a2.lastName, but either one
|
|
128
|
-
// might be missing the other's changed fields in it's lazy-initialized data field...
|
|
129
|
-
// (Use `?` because subtypes won't have the updatedAt, and it will be handled by the base type
|
|
130
|
-
// `newUpdateUp`--except STI where we're doing it all in one go, probably needs checked here.)
|
|
131
|
-
const updatedAt = meta.timestampFields?.updatedAt;
|
|
132
|
-
changedFields.add("id");
|
|
133
|
-
if (updatedAt)
|
|
134
|
-
changedFields.add(updatedAt);
|
|
135
|
-
for (const entity of entities) {
|
|
136
|
-
const { data } = (0, BaseEntity_1.getInstanceData)(entity);
|
|
137
|
-
for (const key of changedFields) {
|
|
138
|
-
// Check isChangeableField because we might be updating the base `publishers` table
|
|
139
|
-
// and `originalData` might have fields from a subclass `large_publishers` table.
|
|
140
|
-
if (!(key in data) && (0, fields_1.isChangeableField)(entity, key)) {
|
|
141
|
-
(0, fields_1.getField)(entity, key);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
const columns = (meta.inheritanceType === "sti"
|
|
146
|
-
? // Hack this one handling of STI into here...
|
|
147
|
-
(0, EntityMetadata_1.getBaseSelfAndSubMetas)(meta).flatMap((meta) => meta.stiDiscriminatorField
|
|
148
|
-
? Object.values(meta.fields)
|
|
149
|
-
: Object.values(meta.fields).filter((f) => f.fieldName !== "id"))
|
|
150
|
-
: Object.values(meta.fields))
|
|
151
|
-
.filter((f) => changedFields.has(f.fieldName))
|
|
152
|
-
.filter(serde_1.hasSerde)
|
|
153
|
-
.flatMap((f) => f.serde.columns);
|
|
154
|
-
// If we're using class table inheritance, base/child tables may not have any columns to update
|
|
155
|
-
if (columns.length === 1) {
|
|
156
|
-
return undefined;
|
|
157
|
-
}
|
|
158
|
-
// We already have the bumped updated_at column, but also include the original updated_at for the data CTE
|
|
159
|
-
if (updatedAt) {
|
|
160
|
-
const serde = meta.fields[updatedAt].serde;
|
|
161
|
-
columns.push({
|
|
162
|
-
columnName: "__original_updated_at",
|
|
163
|
-
dbType: "timestamptz",
|
|
164
|
-
dbValue: (_, entity) => serde.dbValue((0, BaseEntity_1.getInstanceData)(entity).originalData),
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
const columnValues = collectBindings(entities, meta.tableName, columns, []);
|
|
168
|
-
const updatedAtColumn = updatedAt ? meta.fields[updatedAt].serde.columns[0] : undefined;
|
|
169
|
-
return { tableName: meta.tableName, columns, updatedAt: updatedAtColumn?.columnName, columnValues };
|
|
170
|
-
}
|
|
171
|
-
function addDeletes(ops, todo) {
|
|
172
|
-
if (todo.deletes.length > 0) {
|
|
173
|
-
const meta = todo.metadata;
|
|
174
|
-
const ids = todo.deletes.map((e) => (0, keys_1.keyToNumber)(meta, e.idTagged).toString());
|
|
175
|
-
if (meta.subTypes.length > 0) {
|
|
176
|
-
(0, EntityMetadata_1.getBaseSelfAndSubMetas)(meta).forEach((meta) => {
|
|
177
|
-
ops.deletes.push({ tableName: meta.tableName, ids });
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
ops.deletes.push({ tableName: meta.tableName, ids });
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
function groupEntitiesByTable(entities) {
|
|
186
|
-
const entitiesByType = new Map();
|
|
187
|
-
for (const e of entities) {
|
|
188
|
-
for (const m of (0, EntityMetadata_1.getBaseAndSelfMetas)((0, EntityMetadata_1.getMetadata)(e))) {
|
|
189
|
-
let list = entitiesByType.get(m);
|
|
190
|
-
if (!list) {
|
|
191
|
-
list = [];
|
|
192
|
-
entitiesByType.set(m, list);
|
|
193
|
-
}
|
|
194
|
-
list.push(e);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
return [...entitiesByType.entries()];
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Builds a *columnar* array of bindings for the given `entities` and `columns`.
|
|
201
|
-
*
|
|
202
|
-
* We use a columnar approach, instead of `rows[]`, to best match the unnest-based
|
|
203
|
-
* column operations in our `batchInsert` / `batchUpdate` SQL statements.
|
|
204
|
-
*/
|
|
205
|
-
function collectBindings(entities, tableName, columns, fixups) {
|
|
206
|
-
const bindings = [];
|
|
207
|
-
for (const column of columns) {
|
|
208
|
-
const columnValues = [];
|
|
209
|
-
for (const entity of entities) {
|
|
210
|
-
const { data } = (0, BaseEntity_1.getInstanceData)(entity);
|
|
211
|
-
columnValues.push(column.dbValue(data, entity, tableName, fixups) ?? null);
|
|
212
|
-
}
|
|
213
|
-
bindings.push(columnValues);
|
|
214
|
-
}
|
|
215
|
-
return bindings;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Given `fixups` that indicate where we inserted `NULL` into non-deferred FKs, create `UPDATE`s
|
|
219
|
-
* that insert the value now that the FK check will succeed.
|
|
220
|
-
*/
|
|
221
|
-
function translateFixupsIntoUpdates(ops, fixups) {
|
|
222
|
-
// Create a single `UPDATE` for the N fixups we might have for each table/column combination
|
|
223
|
-
(0, utils_1.groupBy)(fixups, (f) => `${f.tableName}.${f.column.columnName}`).forEach((fixups) => {
|
|
224
|
-
const { tableName, entity, column } = fixups[0];
|
|
225
|
-
ops.updates.push({
|
|
226
|
-
tableName,
|
|
227
|
-
columns: [(0, EntityMetadata_1.getMetadata)(entity).fields["id"].serde.columns[0], column],
|
|
228
|
-
columnValues: [
|
|
229
|
-
// Make 1 column of ids, and 1 column of values
|
|
230
|
-
fixups.map((fixup) => fixup.entity.id),
|
|
231
|
-
fixups.map((fixup) => fixup.value),
|
|
232
|
-
],
|
|
233
|
-
updatedAt: undefined,
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
//# sourceMappingURL=EntityWriter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntityWriter.js","sourceRoot":"","sources":["../../src/drivers/EntityWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Knex } from "knex";
|
|
2
|
-
import { Todo } from "../Todo";
|
|
3
|
-
export interface IdAssigner {
|
|
4
|
-
assignNewIds(todos: Record<string, Todo>): Promise<void>;
|
|
5
|
-
}
|
|
6
|
-
/** Super-small/dumb wrapper around maybe-Knex/maybe-postgres.js/maybe-Bun-sql libraries. */
|
|
7
|
-
type QueryRunner = (sql: string) => Promise<any[]>;
|
|
8
|
-
/**
|
|
9
|
-
* Assigns all new entities an id directly from their corresponding sequence generator, instead of via INSERTs.
|
|
10
|
-
*
|
|
11
|
-
* This lets us avoid cyclic issues with some INSERTs having foreign keys to other rows that themselves
|
|
12
|
-
* need to first be INSERTed.
|
|
13
|
-
*/
|
|
14
|
-
export declare class SequenceIdAssigner implements IdAssigner {
|
|
15
|
-
#private;
|
|
16
|
-
constructor(knex: Knex);
|
|
17
|
-
constructor(runner: QueryRunner);
|
|
18
|
-
assignNewIds(todos: Record<string, Todo>): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Creates random UUIDs for uuid-based keys in production environments.
|
|
22
|
-
*
|
|
23
|
-
* See {@link TestUuidAssigner} for creating stable-ish ids for tests
|
|
24
|
-
*/
|
|
25
|
-
export declare class RandomUuidAssigner implements IdAssigner {
|
|
26
|
-
assignNewIds(todos: Record<string, Todo>): Promise<void>;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Creates deterministic / stable-ish UUIDs for test suites.
|
|
30
|
-
*
|
|
31
|
-
* We use each entity's tag as the 3rd group of digits, and a per-entity incrementing integer as
|
|
32
|
-
* the 4th group of digits.
|
|
33
|
-
*
|
|
34
|
-
* E.g. a test with two Authors (tag `a`) and three Books (tag `b`) will get these ids:
|
|
35
|
-
*
|
|
36
|
-
* ```
|
|
37
|
-
* 00000000-0000-0000-000a-000000000000
|
|
38
|
-
* 00000000-0000-0000-000a-000000000001
|
|
39
|
-
* 00000000-0000-0000-000b-000000000000
|
|
40
|
-
* 00000000-0000-0000-000b-000000000001
|
|
41
|
-
* 00000000-0000-0000-000b-000000000002
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export declare class TestUuidAssigner implements IdAssigner {
|
|
45
|
-
private nextId;
|
|
46
|
-
assignNewIds(todos: Record<string, Todo>): Promise<void>;
|
|
47
|
-
reset(): void;
|
|
48
|
-
}
|
|
49
|
-
export {};
|
|
50
|
-
//# sourceMappingURL=IdAssigner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IdAssigner.d.ts","sourceRoot":"","sources":["../../src/drivers/IdAssigner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,4FAA4F;AAC5F,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,UAAU;;gBAGhC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,WAAW;IAShC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB/D;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IAC7C,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAO/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,MAAM,CAA8B;IAEtC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D,KAAK;CAGN"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.TestUuidAssigner = exports.RandomUuidAssigner = exports.SequenceIdAssigner = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const BaseEntity_1 = require("../BaseEntity");
|
|
39
|
-
const keys_1 = require("../keys");
|
|
40
|
-
/**
|
|
41
|
-
* Assigns all new entities an id directly from their corresponding sequence generator, instead of via INSERTs.
|
|
42
|
-
*
|
|
43
|
-
* This lets us avoid cyclic issues with some INSERTs having foreign keys to other rows that themselves
|
|
44
|
-
* need to first be INSERTed.
|
|
45
|
-
*/
|
|
46
|
-
class SequenceIdAssigner {
|
|
47
|
-
#runner;
|
|
48
|
-
constructor(runner) {
|
|
49
|
-
if ("raw" in runner) {
|
|
50
|
-
this.#runner = async (sql) => (await runner.raw(sql)).rows;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.#runner = runner;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
async assignNewIds(todos) {
|
|
57
|
-
const seqStatements = [];
|
|
58
|
-
Object.values(todos).forEach((todo) => {
|
|
59
|
-
// Even if we have INSERTs, the user may have already assigned ids...
|
|
60
|
-
const needsIds = todo.inserts.filter((e) => e.idMaybe === undefined);
|
|
61
|
-
if (needsIds.length > 0) {
|
|
62
|
-
const sequenceName = `${todo.metadata.tableName}_id_seq`;
|
|
63
|
-
const sql = `select nextval('${sequenceName}') from generate_series(1, ${needsIds.length})`;
|
|
64
|
-
seqStatements.push(sql);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
if (seqStatements.length > 0) {
|
|
68
|
-
// There will be 1 per table; 1 single insert should be fine but we might need to batch for super-large schemas?
|
|
69
|
-
const sql = seqStatements.join(" UNION ALL ");
|
|
70
|
-
const result = await this.#runner(sql);
|
|
71
|
-
let i = 0;
|
|
72
|
-
Object.values(todos).forEach((todo) => {
|
|
73
|
-
for (const insert of todo.inserts.filter((e) => e.idMaybe === undefined)) {
|
|
74
|
-
// Use todo.metadata so that all subtypes get their base type's tag
|
|
75
|
-
(0, BaseEntity_1.getInstanceData)(insert).data["id"] = (0, keys_1.keyToTaggedId)(todo.metadata, result[i++]["nextval"]);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.SequenceIdAssigner = SequenceIdAssigner;
|
|
82
|
-
/**
|
|
83
|
-
* Creates random UUIDs for uuid-based keys in production environments.
|
|
84
|
-
*
|
|
85
|
-
* See {@link TestUuidAssigner} for creating stable-ish ids for tests
|
|
86
|
-
*/
|
|
87
|
-
class RandomUuidAssigner {
|
|
88
|
-
async assignNewIds(todos) {
|
|
89
|
-
Object.values(todos).forEach((todo) => {
|
|
90
|
-
for (const insert of todo.inserts) {
|
|
91
|
-
(0, BaseEntity_1.getInstanceData)(insert).data["id"] = (0, keys_1.keyToTaggedId)(todo.metadata, crypto.randomUUID());
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.RandomUuidAssigner = RandomUuidAssigner;
|
|
97
|
-
/**
|
|
98
|
-
* Creates deterministic / stable-ish UUIDs for test suites.
|
|
99
|
-
*
|
|
100
|
-
* We use each entity's tag as the 3rd group of digits, and a per-entity incrementing integer as
|
|
101
|
-
* the 4th group of digits.
|
|
102
|
-
*
|
|
103
|
-
* E.g. a test with two Authors (tag `a`) and three Books (tag `b`) will get these ids:
|
|
104
|
-
*
|
|
105
|
-
* ```
|
|
106
|
-
* 00000000-0000-0000-000a-000000000000
|
|
107
|
-
* 00000000-0000-0000-000a-000000000001
|
|
108
|
-
* 00000000-0000-0000-000b-000000000000
|
|
109
|
-
* 00000000-0000-0000-000b-000000000001
|
|
110
|
-
* 00000000-0000-0000-000b-000000000002
|
|
111
|
-
* ```
|
|
112
|
-
*/
|
|
113
|
-
class TestUuidAssigner {
|
|
114
|
-
nextId = {};
|
|
115
|
-
async assignNewIds(todos) {
|
|
116
|
-
Object.entries(todos).forEach(([, todo]) => {
|
|
117
|
-
if (todo.inserts.length > 0) {
|
|
118
|
-
const tag = todo.metadata.tagName.substring(0, 4).padStart(4, "0");
|
|
119
|
-
this.nextId[tag] ??= 0;
|
|
120
|
-
for (const insert of todo.inserts) {
|
|
121
|
-
const id = String(this.nextId[tag]++);
|
|
122
|
-
const uuid = `00000000-0000-0000-${tag}-${id.padStart(12, "0")}`;
|
|
123
|
-
(0, BaseEntity_1.getInstanceData)(insert).data["id"] = (0, keys_1.keyToTaggedId)(todo.metadata, uuid);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
reset() {
|
|
129
|
-
this.nextId = {};
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
exports.TestUuidAssigner = TestUuidAssigner;
|
|
133
|
-
//# sourceMappingURL=IdAssigner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IdAssigner.js","sourceRoot":"","sources":["../../src/drivers/IdAssigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/PostgresDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EAKL,aAAa,EAIb,eAAe,EACf,aAAa,EACb,aAAa,EACd,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oFAAoF;IACpF,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,YAAW,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;;IAK3D,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,EAC3B,IAAI,CAAC,EAAE,kBAAkB;IAOrB,WAAW,CACf,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;IAKX,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAOtF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBxF,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E,KAAK,CACT,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAgBhB,IAAI,cAAc;;MAEjB;IAED,OAAO,CAAC,iBAAiB;CAG1B;AAoJD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAkB5E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresDriver.js","sourceRoot":"","sources":["../../src/drivers/PostgresDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ParsedCteClause, ParsedFindQuery } from "../QueryParser";
|
|
2
|
-
/**
|
|
3
|
-
* Transforms `ParsedFindQuery` into a raw SQL string.
|
|
4
|
-
*
|
|
5
|
-
* In theory this should be implemented within each Driver, but the logic will be largely
|
|
6
|
-
* the same for different dbs.
|
|
7
|
-
*/
|
|
8
|
-
export declare function buildRawQuery(parsed: ParsedFindQuery, settings: {
|
|
9
|
-
limit?: number;
|
|
10
|
-
offset?: number;
|
|
11
|
-
}): {
|
|
12
|
-
sql: string;
|
|
13
|
-
bindings: readonly any[];
|
|
14
|
-
};
|
|
15
|
-
/** Creates the `WITH alias (...)` SQL for the given `cte`. */
|
|
16
|
-
export declare function buildCteSql(cte: ParsedCteClause): {
|
|
17
|
-
sql: string;
|
|
18
|
-
bindings: readonly any[];
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=buildRawQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildRawQuery.d.ts","sourceRoot":"","sources":["../../src/drivers/buildRawQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAe,MAAM,gBAAgB,CAAC;AAK/E;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,CA+G3C;AAWD,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,CAe3F"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildRawQuery = buildRawQuery;
|
|
4
|
-
exports.buildCteSql = buildCteSql;
|
|
5
|
-
const keywords_1 = require("../keywords");
|
|
6
|
-
const utils_1 = require("../utils");
|
|
7
|
-
const buildUtils_1 = require("./buildUtils");
|
|
8
|
-
/**
|
|
9
|
-
* Transforms `ParsedFindQuery` into a raw SQL string.
|
|
10
|
-
*
|
|
11
|
-
* In theory this should be implemented within each Driver, but the logic will be largely
|
|
12
|
-
* the same for different dbs.
|
|
13
|
-
*/
|
|
14
|
-
function buildRawQuery(parsed, settings) {
|
|
15
|
-
const { limit, offset } = settings;
|
|
16
|
-
const primary = parsed.tables.find((t) => t.join === "primary");
|
|
17
|
-
// If we're doing o2m joins, add a `DISTINCT` clause to avoid duplicates
|
|
18
|
-
const needsDistinct = parsed.tables.some((t) => t.join === "outer" && t.distinct !== false) &&
|
|
19
|
-
// If this is a `findCount`, it will rewrite the `select` to have its own distinct
|
|
20
|
-
!parsed.selects.find((s) => typeof s === "string" && s.startsWith("count("));
|
|
21
|
-
let sql = "";
|
|
22
|
-
const bindings = [];
|
|
23
|
-
if (parsed.ctes && parsed.ctes.length > 0) {
|
|
24
|
-
const hasRecursive = parsed.ctes.some((cte) => cte.recursive);
|
|
25
|
-
const maybeRecursive = hasRecursive ? " RECURSIVE" : "";
|
|
26
|
-
sql += `WITH${maybeRecursive}`;
|
|
27
|
-
for (let i = 0; i < parsed.ctes.length; i++) {
|
|
28
|
-
const cte = parsed.ctes[i];
|
|
29
|
-
sql += i > 0 ? ", " : "";
|
|
30
|
-
sql += ` ${cte.alias}`;
|
|
31
|
-
if (cte.columns) {
|
|
32
|
-
sql += " (";
|
|
33
|
-
for (let j = 0; j < cte.columns.length; j++) {
|
|
34
|
-
sql += j > 0 ? ", " : "";
|
|
35
|
-
sql += (0, keywords_1.kq)(cte.columns[j].columnName);
|
|
36
|
-
}
|
|
37
|
-
sql += ")";
|
|
38
|
-
}
|
|
39
|
-
if (cte.query.kind === "raw") {
|
|
40
|
-
sql += ` AS (${(0, utils_1.cleanSql)(cte.query.sql)})`;
|
|
41
|
-
bindings.push(...cte.query.bindings);
|
|
42
|
-
}
|
|
43
|
-
else if (cte.query.kind === "ast") {
|
|
44
|
-
const nested = buildRawQuery(cte.query.query, {});
|
|
45
|
-
sql += ` AS (${nested.sql})`;
|
|
46
|
-
bindings.push(...nested.bindings);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
(0, utils_1.assertNever)(cte.query);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
sql += " ";
|
|
53
|
-
}
|
|
54
|
-
sql += "SELECT ";
|
|
55
|
-
parsed.selects.forEach((s, i) => {
|
|
56
|
-
const maybeDistinct = i === 0 && needsDistinct ? buildDistinctOn(parsed, primary) : "";
|
|
57
|
-
const maybeComma = i === parsed.selects.length - 1 ? "" : ", ";
|
|
58
|
-
if (typeof s === "string") {
|
|
59
|
-
sql += maybeDistinct + s + maybeComma;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
sql += maybeDistinct + s.sql + maybeComma;
|
|
63
|
-
bindings.push(...s.bindings);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
// If we're doing "select distinct" for o2m joins, then all order bys must be selects
|
|
67
|
-
if (needsDistinct && parsed.orderBys.length > 0) {
|
|
68
|
-
for (const { alias, column } of parsed.orderBys) {
|
|
69
|
-
sql += `, ${(0, keywords_1.kqDot)(alias, column)}`;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Make sure the primary is first
|
|
73
|
-
sql += ` FROM ${as(primary)}`;
|
|
74
|
-
// Then the joins
|
|
75
|
-
for (const t of parsed.tables) {
|
|
76
|
-
if (t.join === "inner") {
|
|
77
|
-
sql += ` JOIN ${as(t)} ON ${t.col1} = ${t.col2}`;
|
|
78
|
-
}
|
|
79
|
-
else if (t.join === "outer") {
|
|
80
|
-
sql += ` LEFT OUTER JOIN ${as(t)} ON ${t.col1} = ${t.col2}`;
|
|
81
|
-
}
|
|
82
|
-
else if (t.join === "primary") {
|
|
83
|
-
// handled above
|
|
84
|
-
}
|
|
85
|
-
else if (t.join === "lateral") {
|
|
86
|
-
const { sql: subQ, bindings: subB } = buildRawQuery(t.query, {});
|
|
87
|
-
sql += ` CROSS JOIN LATERAL (${subQ}) AS ${(0, keywords_1.kq)(t.alias)}`;
|
|
88
|
-
bindings.push(...subB);
|
|
89
|
-
}
|
|
90
|
-
else if (t.join === "cross") {
|
|
91
|
-
sql += ` CROSS JOIN ${as(t)}`;
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
(0, utils_1.assertNever)(t.join);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (parsed.condition) {
|
|
98
|
-
const where = (0, buildUtils_1.buildWhereClause)(parsed.condition, true);
|
|
99
|
-
if (where) {
|
|
100
|
-
sql += " WHERE " + where[0];
|
|
101
|
-
bindings.push(...where[1]);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (parsed.groupBys && parsed.groupBys.length > 0) {
|
|
105
|
-
sql += " GROUP BY " + parsed.groupBys.map((ob) => (0, keywords_1.kqDot)(ob.alias, ob.column)).join(", ");
|
|
106
|
-
}
|
|
107
|
-
if (parsed.orderBys.length > 0) {
|
|
108
|
-
sql += " ORDER BY " + parsed.orderBys.map((ob) => (0, keywords_1.kqDot)(ob.alias, ob.column) + " " + ob.order).join(", ");
|
|
109
|
-
}
|
|
110
|
-
if (limit) {
|
|
111
|
-
sql += ` LIMIT ?`;
|
|
112
|
-
bindings.push(limit);
|
|
113
|
-
}
|
|
114
|
-
if (offset) {
|
|
115
|
-
sql += ` OFFSET ?`;
|
|
116
|
-
bindings.push(offset);
|
|
117
|
-
}
|
|
118
|
-
return { sql, bindings };
|
|
119
|
-
}
|
|
120
|
-
function buildDistinctOn(parsed, primary) {
|
|
121
|
-
const columns = [
|
|
122
|
-
// If we have an order by, it needs to be included in the DISTINCT ON
|
|
123
|
-
...parsed.orderBys.map((ob) => (0, keywords_1.kqDot)(ob.alias, ob.column)),
|
|
124
|
-
(0, keywords_1.kqDot)(primary.alias, "id"),
|
|
125
|
-
];
|
|
126
|
-
return `DISTINCT ON (${columns.join(", ")}) `;
|
|
127
|
-
}
|
|
128
|
-
/** Creates the `WITH alias (...)` SQL for the given `cte`. */
|
|
129
|
-
function buildCteSql(cte) {
|
|
130
|
-
const maybeRecursive = cte.recursive ? "RECURSIVE " : "";
|
|
131
|
-
const maybeColumns = cte.columns ? ` (${cte.columns.map((c) => (0, keywords_1.kq)(c.columnName)).join(", ")})` : "";
|
|
132
|
-
const prefix = `WITH ${maybeRecursive}${cte.alias}${maybeColumns} AS`;
|
|
133
|
-
if (cte.query.kind === "raw") {
|
|
134
|
-
return {
|
|
135
|
-
sql: `${prefix} (${(0, utils_1.cleanSql)(cte.query.sql)} )`,
|
|
136
|
-
bindings: cte.query.bindings,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
else if (cte.query.kind === "ast") {
|
|
140
|
-
const { sql, bindings } = buildRawQuery(cte.query.query, {});
|
|
141
|
-
return { sql: `${prefix} (${sql})`, bindings };
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
(0, utils_1.assertNever)(cte.query);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const as = (t) => `${(0, keywords_1.kq)(t.table)} AS ${(0, keywords_1.kq)(t.alias)}`;
|
|
148
|
-
//# sourceMappingURL=buildRawQuery.js.map
|