@casekit/orm 0.0.1-alpha.15 → 0.0.1-alpha.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/orm.query.test.d.ts +2 -0
- package/lib/orm.query.test.d.ts.map +1 -0
- package/lib/orm.query.test.js +22 -0
- package/lib/orm.query.test.js.map +1 -0
- package/lib/queries/findMany.d.ts.map +1 -1
- package/lib/queries/findMany.js +3 -3
- package/lib/queries/findMany.js.map +1 -1
- package/package.json +3 -6
- package/src/Connection.ts +65 -0
- package/src/errors.ts +18 -0
- package/src/index.ts +16 -0
- package/src/logger.ts +3 -0
- package/src/migrate/commands/implode.ts +46 -0
- package/src/migrate/index.ts +1 -0
- package/src/migrate/migrator.ts +24 -0
- package/src/migrate/sql/createExtensionsSql.test.ts +26 -0
- package/src/migrate/sql/createExtensionsSql.ts +16 -0
- package/src/migrate/sql/createForeignKeyConstraintSql.test.ts +50 -0
- package/src/migrate/sql/createForeignKeyConstraintSql.ts +44 -0
- package/src/migrate/sql/createSchemasSql.test.ts +81 -0
- package/src/migrate/sql/createSchemasSql.ts +15 -0
- package/src/migrate/sql/createTableSql.properties.ts +38 -0
- package/src/migrate/sql/createTableSql.test.ts +74 -0
- package/src/migrate/sql/createTableSql.ts +53 -0
- package/src/migrate/sql/createUniqueConstraintSql.ts +27 -0
- package/src/migrate/sql/dropSchemasSql.ts +15 -0
- package/src/migrate/sql/dropTableSql.ts +13 -0
- package/src/orm.query.test.ts +28 -0
- package/src/orm.ts +370 -0
- package/src/pull/index.ts +1 -0
- package/src/pull/introspect/getForeignKeys.ts +64 -0
- package/src/pull/introspect/getPrimaryKeys.ts +26 -0
- package/src/pull/introspect/getTables.ts +51 -0
- package/src/pull/introspect/getUniqueConstraints.ts +39 -0
- package/src/pull/parse/parseCreateUniqueIndexStatement.test.ts +14 -0
- package/src/pull/parse/parseCreateUniqueIndexStatement.ts +19 -0
- package/src/pull/pull.ts +78 -0
- package/src/pull/render/renderModel.test.ts +144 -0
- package/src/pull/render/renderModel.ts +141 -0
- package/src/pull/render/renderModelsIndex.ts +24 -0
- package/src/pull/render/renderRelations.ts +77 -0
- package/src/pull/render/renderRelationsIndex.ts +24 -0
- package/src/pull/types/ColumnMeta.ts +10 -0
- package/src/pull/types/ForeignKey.ts +6 -0
- package/src/pull/types/PrimaryKey.ts +6 -0
- package/src/pull/types/UniqueConstraint.ts +8 -0
- package/src/pull/util/format.ts +17 -0
- package/src/pull/util/quote.ts +7 -0
- package/src/pull/util/unquote.ts +9 -0
- package/src/queries/clauses/IncludeClause.ts +39 -0
- package/src/queries/clauses/LateralByClause.ts +4 -0
- package/src/queries/clauses/ReturningClause.ts +7 -0
- package/src/queries/clauses/SelectClause.ts +7 -0
- package/src/queries/clauses/WhereClause.ts +16 -0
- package/src/queries/clauses/helpers/OptionalColumn.ts +18 -0
- package/src/queries/clauses/helpers/OptionalParams.ts +14 -0
- package/src/queries/clauses/helpers/RequiredColumn.ts +8 -0
- package/src/queries/clauses/helpers/RequiredParams.ts +14 -0
- package/src/queries/clauses/include/IncludedRelationModel.ts +13 -0
- package/src/queries/clauses/include/IncludedRelationName.ts +11 -0
- package/src/queries/clauses/include/IncludedRelationQuery.ts +20 -0
- package/src/queries/clauses/where/buildWhereClause.ts +121 -0
- package/src/queries/clauses/where/buildWhereClauses.test.ts +145 -0
- package/src/queries/clauses/where/buildWhereClauses.ts +45 -0
- package/src/queries/clauses/where/operators.ts +13 -0
- package/src/queries/clauses/where/types/WhereClauseValue.ts +39 -0
- package/src/queries/count/buildCount.ts +77 -0
- package/src/queries/count/countToSql.ts +66 -0
- package/src/queries/count/tests/count.test.ts +35 -0
- package/src/queries/count/types/BaseCountParams.ts +11 -0
- package/src/queries/count/types/CountBuilder.ts +45 -0
- package/src/queries/count/types/CountParams.ts +27 -0
- package/src/queries/count.ts +33 -0
- package/src/queries/create/buildCreate.ts +67 -0
- package/src/queries/create/createResultSchema.ts +24 -0
- package/src/queries/create/createToSql.ts +44 -0
- package/src/queries/create/tests/createMany.varied-keys.test.ts +28 -0
- package/src/queries/create/tests/createOne.test-d.ts +116 -0
- package/src/queries/create/tests/createOne.test.ts +197 -0
- package/src/queries/create/types/BaseCreateManyParams.ts +7 -0
- package/src/queries/create/types/BaseCreateOneParams.ts +7 -0
- package/src/queries/create/types/CreateManyParams.ts +15 -0
- package/src/queries/create/types/CreateManyResult.ts +17 -0
- package/src/queries/create/types/CreateOneParams.ts +22 -0
- package/src/queries/create/types/CreateOneResult.ts +17 -0
- package/src/queries/createMany.ts +38 -0
- package/src/queries/createOne.ts +27 -0
- package/src/queries/delete/buildDelete.ts +56 -0
- package/src/queries/delete/deleteResultSchema.ts +23 -0
- package/src/queries/delete/deleteToSql.ts +48 -0
- package/src/queries/delete/tests/deleteOne.test.ts +108 -0
- package/src/queries/delete/types/BaseDeleteParams.ts +9 -0
- package/src/queries/delete/types/DeleteManyResult.ts +16 -0
- package/src/queries/delete/types/DeleteOneResult.ts +16 -0
- package/src/queries/delete/types/DeleteParams.ts +12 -0
- package/src/queries/deleteMany.ts +33 -0
- package/src/queries/deleteOne.ts +32 -0
- package/src/queries/find/buildFind.ts +138 -0
- package/src/queries/find/findResultSchema.ts +32 -0
- package/src/queries/find/findToSql.test.ts +123 -0
- package/src/queries/find/findToSql.ts +141 -0
- package/src/queries/find/getIncludedManyToManyRelations.ts +49 -0
- package/src/queries/find/getIncludedOneToManyRelations.ts +44 -0
- package/src/queries/find/tests/findMany.include.test.ts +107 -0
- package/src/queries/find/tests/findMany.limit.test-d.ts +75 -0
- package/src/queries/find/tests/findMany.limit.test.ts +176 -0
- package/src/queries/find/tests/findMany.nullable-relations.test.ts +127 -0
- package/src/queries/find/tests/findMany.orderBy.test-d.ts +84 -0
- package/src/queries/find/tests/findMany.orderBy.test.ts +184 -0
- package/src/queries/find/tests/findMany.select.test-d.ts +117 -0
- package/src/queries/find/tests/findMany.select.test.ts +188 -0
- package/src/queries/find/tests/findMany.too-deep.test-d.ts +154 -0
- package/src/queries/find/tests/findMany.where.test-d.ts +85 -0
- package/src/queries/find/tests/findMany.where.test.ts +76 -0
- package/src/queries/find/tests/middleware.find.where.test.ts +467 -0
- package/src/queries/find/types/BaseFindParams.ts +18 -0
- package/src/queries/find/types/FindBuilder.ts +73 -0
- package/src/queries/find/types/FindManyParams.ts +24 -0
- package/src/queries/find/types/FindManyResult.ts +13 -0
- package/src/queries/find/types/FindOneParams.ts +17 -0
- package/src/queries/find/types/FindOneResult.ts +50 -0
- package/src/queries/findMany.ts +138 -0
- package/src/queries/findOne.ts +30 -0
- package/src/queries/middleware/Middleware.ts +53 -0
- package/src/queries/middleware/ValuesMiddleware.ts +9 -0
- package/src/queries/middleware/WhereMiddleware.ts +16 -0
- package/src/queries/update/buildUpdate.ts +76 -0
- package/src/queries/update/tests/updateOne.test.ts +118 -0
- package/src/queries/update/types/BaseUpdateParams.ts +10 -0
- package/src/queries/update/types/UpdateManyResult.ts +16 -0
- package/src/queries/update/types/UpdateOneResult.ts +16 -0
- package/src/queries/update/types/UpdateParams.ts +14 -0
- package/src/queries/update/types/UpdateValues.ts +12 -0
- package/src/queries/update/updateResultSchema.ts +23 -0
- package/src/queries/update/updateToSql.ts +43 -0
- package/src/queries/updateMany.ts +33 -0
- package/src/queries/updateOne.ts +33 -0
- package/src/queries/util/hasConditions.test.ts +36 -0
- package/src/queries/util/hasConditions.ts +14 -0
- package/src/queries/util/rowToObject.test.ts +76 -0
- package/src/queries/util/rowToObject.ts +13 -0
- package/src/queries/util/tableAlias.test.ts +20 -0
- package/src/queries/util/tableAlias.ts +10 -0
- package/src/schema/populate/composeMiddleware.ts +51 -0
- package/src/schema/populate/populateConfiguration.ts +48 -0
- package/src/schema/populate/populateModel.ts +98 -0
- package/src/schema/populate/suggestedColumnSchema.ts +62 -0
- package/src/schema/types/base/BaseColumn.ts +10 -0
- package/src/schema/types/base/BaseConfiguration.ts +14 -0
- package/src/schema/types/base/BaseModel.ts +12 -0
- package/src/schema/types/base/BaseModels.ts +3 -0
- package/src/schema/types/base/BaseOrm.ts +8 -0
- package/src/schema/types/base/BaseRelation.ts +19 -0
- package/src/schema/types/base/BaseRelations.ts +3 -0
- package/src/schema/types/constraints/ForeignKey.ts +13 -0
- package/src/schema/types/constraints/UniqueConstraint.ts +9 -0
- package/src/schema/types/helpers/ColumnName.ts +6 -0
- package/src/schema/types/helpers/ColumnType.ts +23 -0
- package/src/schema/types/helpers/Columns.ts +3 -0
- package/src/schema/types/helpers/HasDefault.ts +11 -0
- package/src/schema/types/helpers/IsNullable.ts +7 -0
- package/src/schema/types/helpers/IsProvided.ts +8 -0
- package/src/schema/types/helpers/IsSerial.ts +10 -0
- package/src/schema/types/helpers/ModelName.ts +6 -0
- package/src/schema/types/loose/LooseColumnDefinition.ts +80 -0
- package/src/schema/types/loose/LooseModelDefinition.ts +47 -0
- package/src/schema/types/loose/LooseModelDefinitions.ts +3 -0
- package/src/schema/types/loose/LooseRelationDefinition.ts +10 -0
- package/src/schema/types/loose/LooseRelationsDefinition.ts +8 -0
- package/src/schema/types/loose/LooseRelationsDefinitions.ts +7 -0
- package/src/schema/types/postgres/DataType.ts +65 -0
- package/src/schema/types/relations/ManyToManyRelation.ts +15 -0
- package/src/schema/types/relations/ManyToOneRelation.ts +14 -0
- package/src/schema/types/relations/OneToManyRelation.ts +12 -0
- package/src/schema/types/strict/ColumnDefinition.ts +81 -0
- package/src/schema/types/strict/ModelDefinition.ts +47 -0
- package/src/schema/types/strict/ModelDefinitions.ts +3 -0
- package/src/schema/types/strict/RelationDefinition.ts +13 -0
- package/src/schema/types/strict/RelationsDefinition.ts +8 -0
- package/src/schema/types/strict/RelationsDefinitions.ts +7 -0
- package/src/schema/validate/validateConfiguration.ts +9 -0
- package/src/schema/validate/validateModel.ts +32 -0
- package/src/sql/SQLStatement.test.ts +112 -0
- package/src/sql/SQLStatement.ts +86 -0
- package/src/sql/index.ts +2 -0
- package/src/sql/sql.ts +47 -0
- package/src/test/db/index.ts +27 -0
- package/src/test/db/models/foo.model.ts +24 -0
- package/src/test/db/models/foo.relations.ts +4 -0
- package/src/test/db/models/post.model.ts +34 -0
- package/src/test/db/models/post.relations.ts +21 -0
- package/src/test/db/models/tenant.model.ts +14 -0
- package/src/test/db/models/tenant.relations.ts +22 -0
- package/src/test/db/models/tenantUser.model.ts +23 -0
- package/src/test/db/models/tenantUser.relations.ts +15 -0
- package/src/test/db/models/user.model.ts +29 -0
- package/src/test/db/models/user.relations.ts +38 -0
- package/src/test/db/models.ts +15 -0
- package/src/test/db/relations.ts +13 -0
- package/src/test/gen/column.ts +39 -0
- package/src/test/gen/index.ts +2 -0
- package/src/test/gen/model.ts +58 -0
- package/src/test/gen/sqldate.ts +8 -0
- package/src/test/globalSetup.ts +6 -0
- package/src/test/seed/index.ts +75 -0
- package/src/test/util/withRollback.ts +18 -0
- package/src/test/util/withTransaction.ts +19 -0
- package/src/types/ColumnName.ts +6 -0
- package/src/types/ColumnType.ts +20 -0
- package/src/types/Configuration.ts +21 -0
- package/src/types/ModelType.ts +20 -0
- package/src/types/util/DeepRequired.ts +7 -0
- package/src/types/util/DisallowExtraKeys.ts +5 -0
- package/src/types/util/NonEmptyArray.ts +1 -0
- package/src/types/util/Simplify.ts +8 -0
- package/src/util/ensureArray.ts +4 -0
- package/src/util/interleave.test.ts +35 -0
- package/src/util/interleave.ts +8 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
import { SuggestedColumnType } from "../schema/populate/suggestedColumnSchema";
|
|
4
|
+
import { LooseModelDefinition } from "../schema/types/loose/LooseModelDefinition";
|
|
5
|
+
import { ColumnName } from "./ColumnName";
|
|
6
|
+
|
|
7
|
+
type NonNullableColumnType<
|
|
8
|
+
Model extends LooseModelDefinition,
|
|
9
|
+
C extends ColumnName<Model>,
|
|
10
|
+
> =
|
|
11
|
+
Model["columns"][C]["zodSchema"] extends z.ZodType<unknown>
|
|
12
|
+
? z.infer<Model["columns"][C]["zodSchema"]>
|
|
13
|
+
: SuggestedColumnType<Model["columns"][C]["type"]>;
|
|
14
|
+
|
|
15
|
+
export type ColumnType<
|
|
16
|
+
Model extends LooseModelDefinition,
|
|
17
|
+
C extends ColumnName<Model>,
|
|
18
|
+
> = Model["columns"][C]["nullable"] extends true
|
|
19
|
+
? NonNullableColumnType<Model, C> | null
|
|
20
|
+
: NonNullableColumnType<Model, C>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import pg from "pg";
|
|
2
|
+
|
|
3
|
+
import { Middleware } from "../queries/middleware/Middleware";
|
|
4
|
+
import { LooseModelDefinitions } from "../schema/types/loose/LooseModelDefinitions";
|
|
5
|
+
import { LooseRelationsDefinitions } from "../schema/types/loose/LooseRelationsDefinitions";
|
|
6
|
+
|
|
7
|
+
export type Configuration<
|
|
8
|
+
Models extends LooseModelDefinitions,
|
|
9
|
+
Relations extends LooseRelationsDefinitions<Models>,
|
|
10
|
+
> = {
|
|
11
|
+
models: Models;
|
|
12
|
+
relations?: Relations;
|
|
13
|
+
extensions?: string[];
|
|
14
|
+
schema?: string;
|
|
15
|
+
naming?: {
|
|
16
|
+
column?: (s: string) => string;
|
|
17
|
+
table?: (s: string) => string;
|
|
18
|
+
};
|
|
19
|
+
pool: pg.Pool;
|
|
20
|
+
middleware?: Middleware[];
|
|
21
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IsNullable } from "../schema/types/helpers/IsNullable";
|
|
2
|
+
import { LooseModelDefinition } from "../schema/types/loose/LooseModelDefinition";
|
|
3
|
+
import { ColumnName } from "./ColumnName";
|
|
4
|
+
import { ColumnType } from "./ColumnType";
|
|
5
|
+
import { Simplify } from "./util/Simplify";
|
|
6
|
+
|
|
7
|
+
export type NullableColumn<Model extends LooseModelDefinition> = {
|
|
8
|
+
[C in ColumnName<Model>]: IsNullable<Model, C> extends true ? C : never;
|
|
9
|
+
}[ColumnName<Model>];
|
|
10
|
+
|
|
11
|
+
export type ModelType<Model extends LooseModelDefinition> = Simplify<
|
|
12
|
+
{
|
|
13
|
+
[C in Exclude<ColumnName<Model>, NullableColumn<Model>>]: ColumnType<
|
|
14
|
+
Model,
|
|
15
|
+
C
|
|
16
|
+
>;
|
|
17
|
+
} & {
|
|
18
|
+
[C in NullableColumn<Model>]?: ColumnType<Model, C>;
|
|
19
|
+
}
|
|
20
|
+
>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type DeepRequired<T> = T extends (...args: unknown[]) => unknown
|
|
2
|
+
? T
|
|
3
|
+
: T extends Record<string, unknown>
|
|
4
|
+
? { [K in keyof T]-?: Exclude<DeepRequired<T[K]>, null | undefined> }
|
|
5
|
+
: T extends [infer Head, ...infer Tail]
|
|
6
|
+
? [DeepRequired<Head>, ...DeepRequired<Tail>]
|
|
7
|
+
: T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type NonEmptyArray<T> = [T, ...T[]];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
|
|
3
|
+
import { interleave } from "./interleave";
|
|
4
|
+
|
|
5
|
+
describe("interleave", () => {
|
|
6
|
+
test("it interleaves a value between elements of a list", () => {
|
|
7
|
+
expect(interleave([1, 2, 3], "x")).toEqual([1, "x", 2, "x", 3]);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test("it works with empty lists", () => {
|
|
11
|
+
expect(interleave([], "x")).toEqual([]);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test("it works with long lists", () => {
|
|
15
|
+
expect(interleave([1, 2, 3, 1, 2, 3, 1, 2, 3], "x")).toEqual([
|
|
16
|
+
1,
|
|
17
|
+
"x",
|
|
18
|
+
2,
|
|
19
|
+
"x",
|
|
20
|
+
3,
|
|
21
|
+
"x",
|
|
22
|
+
1,
|
|
23
|
+
"x",
|
|
24
|
+
2,
|
|
25
|
+
"x",
|
|
26
|
+
3,
|
|
27
|
+
"x",
|
|
28
|
+
1,
|
|
29
|
+
"x",
|
|
30
|
+
2,
|
|
31
|
+
"x",
|
|
32
|
+
3,
|
|
33
|
+
]);
|
|
34
|
+
});
|
|
35
|
+
});
|