@casekit/orm2 0.0.0-20250322230249
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/builders/buildCount.d.ts +23 -0
- package/build/builders/buildCount.js +63 -0
- package/build/builders/buildCount.test.d.ts +1 -0
- package/build/builders/buildCount.test.js +144 -0
- package/build/builders/buildCreate.d.ts +5 -0
- package/build/builders/buildCreate.js +28 -0
- package/build/builders/buildCreate.test.d.ts +1 -0
- package/build/builders/buildCreate.test.js +47 -0
- package/build/builders/buildDelete.d.ts +5 -0
- package/build/builders/buildDelete.js +28 -0
- package/build/builders/buildDelete.test.d.ts +1 -0
- package/build/builders/buildDelete.test.js +108 -0
- package/build/builders/buildFind.d.ts +8 -0
- package/build/builders/buildFind.js +185 -0
- package/build/builders/buildFind.test.d.ts +1 -0
- package/build/builders/buildFind.test.js +263 -0
- package/build/builders/buildUpdate.d.ts +5 -0
- package/build/builders/buildUpdate.js +34 -0
- package/build/builders/buildUpdate.test.d.ts +1 -0
- package/build/builders/buildUpdate.test.js +130 -0
- package/build/builders/buildWhere.d.ts +6 -0
- package/build/builders/buildWhere.js +63 -0
- package/build/builders/buildWhere.test.d.ts +1 -0
- package/build/builders/buildWhere.test.js +154 -0
- package/build/builders/types.d.ts +87 -0
- package/build/builders/types.js +1 -0
- package/build/connection.d.ts +31 -0
- package/build/connection.js +206 -0
- package/build/index.d.ts +10 -0
- package/build/index.js +5 -0
- package/build/operators.d.ts +59 -0
- package/build/operators.js +44 -0
- package/build/orm.count.d.ts +14 -0
- package/build/orm.count.js +22 -0
- package/build/orm.createMany.d.ts +5 -0
- package/build/orm.createMany.js +26 -0
- package/build/orm.createOne.d.ts +5 -0
- package/build/orm.createOne.js +34 -0
- package/build/orm.d.ts +81 -0
- package/build/orm.deleteMany.d.ts +5 -0
- package/build/orm.deleteMany.js +26 -0
- package/build/orm.deleteOne.d.ts +5 -0
- package/build/orm.deleteOne.js +32 -0
- package/build/orm.findMany.d.ts +8 -0
- package/build/orm.findMany.js +64 -0
- package/build/orm.findOne.d.ts +5 -0
- package/build/orm.findOne.js +20 -0
- package/build/orm.js +243 -0
- package/build/orm.restrict.d.ts +6 -0
- package/build/orm.restrict.js +52 -0
- package/build/orm.updateMany.d.ts +5 -0
- package/build/orm.updateMany.js +29 -0
- package/build/orm.updateOne.d.ts +5 -0
- package/build/orm.updateOne.js +35 -0
- package/build/sql/countToSql.d.ts +3 -0
- package/build/sql/countToSql.js +11 -0
- package/build/sql/countToSql.test.d.ts +1 -0
- package/build/sql/countToSql.test.js +218 -0
- package/build/sql/createToSql.d.ts +3 -0
- package/build/sql/createToSql.js +27 -0
- package/build/sql/createToSql.test.d.ts +1 -0
- package/build/sql/createToSql.test.js +186 -0
- package/build/sql/deleteToSql.d.ts +3 -0
- package/build/sql/deleteToSql.js +15 -0
- package/build/sql/deleteToSql.test.d.ts +1 -0
- package/build/sql/deleteToSql.test.js +93 -0
- package/build/sql/findToSql.d.ts +3 -0
- package/build/sql/findToSql.js +33 -0
- package/build/sql/findToSql.test.d.ts +1 -0
- package/build/sql/findToSql.test.js +409 -0
- package/build/sql/updateToSql.d.ts +3 -0
- package/build/sql/updateToSql.js +16 -0
- package/build/sql/updateToSql.test.d.ts +1 -0
- package/build/sql/updateToSql.test.js +165 -0
- package/build/sql/util.d.ts +11 -0
- package/build/sql/util.js +36 -0
- package/build/sql/util.test.d.ts +1 -0
- package/build/sql/util.test.js +163 -0
- package/build/tests/connection.test.d.ts +1 -0
- package/build/tests/connection.test.js +304 -0
- package/build/tests/datatypes.test.d.ts +1 -0
- package/build/tests/datatypes.test.js +239 -0
- package/build/tests/operators.test.d.ts +1 -0
- package/build/tests/operators.test.js +125 -0
- package/build/tests/orm.count.middleware.test.d.ts +1 -0
- package/build/tests/orm.count.middleware.test.js +132 -0
- package/build/tests/orm.count.test-d.d.ts +1 -0
- package/build/tests/orm.count.test-d.js +60 -0
- package/build/tests/orm.count.test.d.ts +1 -0
- package/build/tests/orm.count.test.js +151 -0
- package/build/tests/orm.createMany.middleware.test.d.ts +1 -0
- package/build/tests/orm.createMany.middleware.test.js +63 -0
- package/build/tests/orm.createMany.test-d.d.ts +1 -0
- package/build/tests/orm.createMany.test-d.js +131 -0
- package/build/tests/orm.createMany.test.d.ts +1 -0
- package/build/tests/orm.createMany.test.js +392 -0
- package/build/tests/orm.createOne.middleware.test.d.ts +1 -0
- package/build/tests/orm.createOne.middleware.test.js +54 -0
- package/build/tests/orm.createOne.test-d.d.ts +1 -0
- package/build/tests/orm.createOne.test-d.js +113 -0
- package/build/tests/orm.createOne.test.d.ts +1 -0
- package/build/tests/orm.createOne.test.js +268 -0
- package/build/tests/orm.deleteMany.middleware.test.d.ts +1 -0
- package/build/tests/orm.deleteMany.middleware.test.js +77 -0
- package/build/tests/orm.deleteMany.test-d.d.ts +1 -0
- package/build/tests/orm.deleteMany.test-d.js +179 -0
- package/build/tests/orm.deleteMany.test.d.ts +1 -0
- package/build/tests/orm.deleteMany.test.js +394 -0
- package/build/tests/orm.deleteOne.middleware.test.d.ts +1 -0
- package/build/tests/orm.deleteOne.middleware.test.js +61 -0
- package/build/tests/orm.deleteOne.test-d.d.ts +1 -0
- package/build/tests/orm.deleteOne.test-d.js +179 -0
- package/build/tests/orm.deleteOne.test.d.ts +1 -0
- package/build/tests/orm.deleteOne.test.js +360 -0
- package/build/tests/orm.findMany.includeManyToMany.test.d.ts +1 -0
- package/build/tests/orm.findMany.includeManyToMany.test.js +335 -0
- package/build/tests/orm.findMany.includeManyToOne.test.d.ts +1 -0
- package/build/tests/orm.findMany.includeManyToOne.test.js +286 -0
- package/build/tests/orm.findMany.includeOneToMany.test.d.ts +1 -0
- package/build/tests/orm.findMany.includeOneToMany.test.js +530 -0
- package/build/tests/orm.findMany.middleware.test.d.ts +1 -0
- package/build/tests/orm.findMany.middleware.test.js +66 -0
- package/build/tests/orm.findMany.offsetLimit.test.d.ts +1 -0
- package/build/tests/orm.findMany.offsetLimit.test.js +108 -0
- package/build/tests/orm.findMany.orderBy.test.d.ts +1 -0
- package/build/tests/orm.findMany.orderBy.test.js +304 -0
- package/build/tests/orm.findMany.select.test.d.ts +1 -0
- package/build/tests/orm.findMany.select.test.js +278 -0
- package/build/tests/orm.findMany.test-d.d.ts +1 -0
- package/build/tests/orm.findMany.test-d.js +374 -0
- package/build/tests/orm.findMany.where.test.d.ts +1 -0
- package/build/tests/orm.findMany.where.test.js +383 -0
- package/build/tests/orm.findOne.middleware.test.d.ts +1 -0
- package/build/tests/orm.findOne.middleware.test.js +57 -0
- package/build/tests/orm.findOne.test-d.d.ts +1 -0
- package/build/tests/orm.findOne.test-d.js +377 -0
- package/build/tests/orm.findOne.test.d.ts +1 -0
- package/build/tests/orm.findOne.test.js +247 -0
- package/build/tests/orm.restrict.test-d.d.ts +1 -0
- package/build/tests/orm.restrict.test-d.js +105 -0
- package/build/tests/orm.restrict.test.d.ts +1 -0
- package/build/tests/orm.restrict.test.js +259 -0
- package/build/tests/orm.transact.test.d.ts +1 -0
- package/build/tests/orm.transact.test.js +48 -0
- package/build/tests/orm.updateMany.middleware.test.d.ts +1 -0
- package/build/tests/orm.updateMany.middleware.test.js +72 -0
- package/build/tests/orm.updateMany.test.d.ts +1 -0
- package/build/tests/orm.updateMany.test.js +210 -0
- package/build/tests/orm.updateOne.middleware.test.d.ts +1 -0
- package/build/tests/orm.updateOne.middleware.test.js +62 -0
- package/build/tests/orm.updateOne.test.d.ts +1 -0
- package/build/tests/orm.updateOne.test.js +209 -0
- package/build/tests/util/db.d.ts +1571 -0
- package/build/tests/util/db.js +10 -0
- package/build/tests/util/logger.d.ts +19 -0
- package/build/tests/util/logger.js +40 -0
- package/build/types/BaseFindParams.d.ts +1 -0
- package/build/types/BaseFindParams.js +1 -0
- package/build/types/CountParams.d.ts +16 -0
- package/build/types/CountParams.js +1 -0
- package/build/types/CountParams.test-d.d.ts +1 -0
- package/build/types/CountParams.test-d.js +89 -0
- package/build/types/CreateManyParams.d.ts +11 -0
- package/build/types/CreateManyParams.js +1 -0
- package/build/types/CreateManyParams.test-d.d.ts +1 -0
- package/build/types/CreateManyParams.test-d.js +83 -0
- package/build/types/CreateManyResult.d.ts +5 -0
- package/build/types/CreateManyResult.js +1 -0
- package/build/types/CreateManyResult.test-d.d.ts +1 -0
- package/build/types/CreateManyResult.test-d.js +22 -0
- package/build/types/CreateOneParams.d.ts +11 -0
- package/build/types/CreateOneParams.js +1 -0
- package/build/types/CreateOneParams.test-d.d.ts +1 -0
- package/build/types/CreateOneParams.test-d.js +56 -0
- package/build/types/CreateOneResult.d.ts +5 -0
- package/build/types/CreateOneResult.js +1 -0
- package/build/types/CreateOneResult.test-d.d.ts +1 -0
- package/build/types/CreateOneResult.test-d.js +23 -0
- package/build/types/CreateValues.d.ts +6 -0
- package/build/types/CreateValues.js +1 -0
- package/build/types/CreateValues.test-d.d.ts +1 -0
- package/build/types/CreateValues.test-d.js +60 -0
- package/build/types/DeleteManyResult.d.ts +5 -0
- package/build/types/DeleteManyResult.js +1 -0
- package/build/types/DeleteManyResult.test-d.d.ts +1 -0
- package/build/types/DeleteManyResult.test-d.js +23 -0
- package/build/types/DeleteOneResult.d.ts +5 -0
- package/build/types/DeleteOneResult.js +1 -0
- package/build/types/DeleteOneResult.test-d.d.ts +1 -0
- package/build/types/DeleteOneResult.test-d.js +23 -0
- package/build/types/DeleteParams.d.ts +7 -0
- package/build/types/DeleteParams.js +1 -0
- package/build/types/DeleteParams.test-d.d.ts +1 -0
- package/build/types/DeleteParams.test-d.js +46 -0
- package/build/types/FindParams.d.ts +22 -0
- package/build/types/FindParams.js +1 -0
- package/build/types/FindParams.test-d.d.ts +1 -0
- package/build/types/FindParams.test-d.js +107 -0
- package/build/types/FindResult.d.ts +13 -0
- package/build/types/FindResult.js +1 -0
- package/build/types/FindResult.test-d.d.ts +1 -0
- package/build/types/FindResult.test-d.js +30 -0
- package/build/types/IncludeClause.d.ts +5 -0
- package/build/types/IncludeClause.js +1 -0
- package/build/types/IncludeClause.test-d.d.ts +1 -0
- package/build/types/IncludeClause.test-d.js +69 -0
- package/build/types/Middleware.d.ts +51 -0
- package/build/types/Middleware.js +37 -0
- package/build/types/OptionalValues.d.ts +4 -0
- package/build/types/OptionalValues.js +1 -0
- package/build/types/OptionalValues.test-d.d.ts +1 -0
- package/build/types/OptionalValues.test-d.js +12 -0
- package/build/types/OrderByClause.d.ts +9 -0
- package/build/types/OrderByClause.js +1 -0
- package/build/types/OrderByClause.test-d.d.ts +1 -0
- package/build/types/OrderByClause.test-d.js +44 -0
- package/build/types/RequiredValues.d.ts +4 -0
- package/build/types/RequiredValues.js +1 -0
- package/build/types/RequiredValues.test-d.d.ts +1 -0
- package/build/types/RequiredValues.test-d.js +22 -0
- package/build/types/RestrictModels.d.ts +23 -0
- package/build/types/RestrictModels.js +1 -0
- package/build/types/RestrictModels.test-d.d.ts +1 -0
- package/build/types/RestrictModels.test-d.js +44 -0
- package/build/types/ReturningClause.d.ts +3 -0
- package/build/types/ReturningClause.js +1 -0
- package/build/types/ReturningClause.test-d.d.ts +1 -0
- package/build/types/ReturningClause.test-d.js +15 -0
- package/build/types/SelectClause.d.ts +3 -0
- package/build/types/SelectClause.js +1 -0
- package/build/types/SelectClause.test-d.d.ts +1 -0
- package/build/types/SelectClause.test-d.js +15 -0
- package/build/types/UpdateManyResult.d.ts +5 -0
- package/build/types/UpdateManyResult.js +1 -0
- package/build/types/UpdateManyResult.test-d.d.ts +1 -0
- package/build/types/UpdateManyResult.test-d.js +15 -0
- package/build/types/UpdateOneResult.d.ts +5 -0
- package/build/types/UpdateOneResult.js +1 -0
- package/build/types/UpdateOneResult.test-d.d.ts +1 -0
- package/build/types/UpdateOneResult.test-d.js +15 -0
- package/build/types/UpdateParams.d.ts +9 -0
- package/build/types/UpdateParams.js +1 -0
- package/build/types/UpdateParams.test-d.d.ts +1 -0
- package/build/types/UpdateParams.test-d.js +29 -0
- package/build/types/UpdateValues.d.ts +6 -0
- package/build/types/UpdateValues.js +1 -0
- package/build/types/UpdateValues.test-d.d.ts +1 -0
- package/build/types/UpdateValues.test-d.js +33 -0
- package/build/types/WhereClause.d.ts +29 -0
- package/build/types/WhereClause.js +1 -0
- package/build/types/WhereClause.test-d.d.ts +1 -0
- package/build/types/WhereClause.test-d.js +137 -0
- package/build/util/getIncludedToManySubqueries.d.ts +12 -0
- package/build/util/getIncludedToManySubqueries.js +63 -0
- package/build/util/getIncludedToManySubqueries.test.d.ts +1 -0
- package/build/util/getIncludedToManySubqueries.test.js +121 -0
- package/build/util/getLateralJoinValues.d.ts +4 -0
- package/build/util/getLateralJoinValues.js +30 -0
- package/build/util/getLateralJoinValues.test.d.ts +1 -0
- package/build/util/getLateralJoinValues.test.js +99 -0
- package/build/util/hasClauses.d.ts +1 -0
- package/build/util/hasClauses.js +9 -0
- package/build/util/hasClauses.test.d.ts +1 -0
- package/build/util/hasClauses.test.js +15 -0
- package/build/util/makeTableAlias.d.ts +1 -0
- package/build/util/makeTableAlias.js +10 -0
- package/build/util/makeTableAlias.test.d.ts +1 -0
- package/build/util/makeTableAlias.test.js +18 -0
- package/build/util/resultSchema.d.ts +10 -0
- package/build/util/resultSchema.js +42 -0
- package/build/util/rowToObject.d.ts +8 -0
- package/build/util/rowToObject.js +10 -0
- package/build/util/rowToObject.test.d.ts +1 -0
- package/build/util/rowToObject.test.js +68 -0
- package/package.json +67 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { $or } from "#operators.js";
|
|
3
|
+
import { hasClauses } from "./hasClauses.js";
|
|
4
|
+
describe("hasClauses", () => {
|
|
5
|
+
test("it returns true if the clause is a value or an object with string or symbol keys", () => {
|
|
6
|
+
expect(hasClauses({ a: 1 })).toBe(true);
|
|
7
|
+
expect(hasClauses({ [$or]: [{ a: 1 }, { a: 2 }] })).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
test("it returns false if the clause is null, undefined, an empty object, or a non-object value", () => {
|
|
10
|
+
expect(hasClauses(null)).toBe(false);
|
|
11
|
+
expect(hasClauses(undefined)).toBe(false);
|
|
12
|
+
expect(hasClauses({})).toBe(false);
|
|
13
|
+
expect(hasClauses("wrong")).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const makeTableAlias: (index: number) => string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const makeTableAlias = (index) => {
|
|
2
|
+
let result = "";
|
|
3
|
+
let curr = index;
|
|
4
|
+
do {
|
|
5
|
+
const remainder = curr % 26;
|
|
6
|
+
result = String.fromCharCode("a".charCodeAt(0) + remainder) + result;
|
|
7
|
+
curr = (curr - remainder) / 26 - 1;
|
|
8
|
+
} while (curr >= 0);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { makeTableAlias } from "./makeTableAlias.js";
|
|
3
|
+
describe("makeTableAlias", () => {
|
|
4
|
+
test.each([
|
|
5
|
+
[0, "a"],
|
|
6
|
+
[1, "b"],
|
|
7
|
+
[26, "aa"],
|
|
8
|
+
[27, "ab"],
|
|
9
|
+
[51, "az"],
|
|
10
|
+
[52, "ba"],
|
|
11
|
+
[104, "da"],
|
|
12
|
+
[105, "db"],
|
|
13
|
+
[42000, "bjck"],
|
|
14
|
+
[42001, "bjcl"],
|
|
15
|
+
])("tableAlias(%s) => %s", (index, expected) => {
|
|
16
|
+
expect(makeTableAlias(index)).toEqual(expected);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ZodSchema } from "zod";
|
|
2
|
+
import { NormalizedConfig, NormalizedModelDefinition } from "@casekit/orm2-config";
|
|
3
|
+
import { ModelDefinition, OperatorDefinitions } from "@casekit/orm2-schema";
|
|
4
|
+
import { FindParams } from "../types/FindParams.js";
|
|
5
|
+
import { ReturningClause } from "../types/ReturningClause.js";
|
|
6
|
+
export declare const resultFields: (model: NormalizedModelDefinition, fields: string[]) => Record<string, ZodSchema<unknown>>;
|
|
7
|
+
export declare const findOneResultSchema: (config: NormalizedConfig, m: string, query: FindParams<Record<string, Required<ModelDefinition>>, OperatorDefinitions, string>) => ZodSchema<unknown>;
|
|
8
|
+
export declare const findManyResultSchema: (config: NormalizedConfig, m: string, query: FindParams<Record<string, Required<ModelDefinition>>, OperatorDefinitions, string>) => ZodSchema<unknown>;
|
|
9
|
+
export declare const returningOneResultSchema: (model: NormalizedModelDefinition, fields?: string[]) => ZodSchema<unknown>;
|
|
10
|
+
export declare const returningManyResultSchema: (model: NormalizedModelDefinition, returning?: ReturningClause<ModelDefinition>) => ZodSchema<unknown>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getRelation, } from "@casekit/orm2-config";
|
|
3
|
+
export const resultFields = (model, fields) => {
|
|
4
|
+
const obj = {};
|
|
5
|
+
fields.forEach((f) => {
|
|
6
|
+
const field = model.fields[f];
|
|
7
|
+
obj[f] = field.nullable
|
|
8
|
+
? field.zodSchema.nullish().default(null)
|
|
9
|
+
: field.zodSchema;
|
|
10
|
+
});
|
|
11
|
+
return obj;
|
|
12
|
+
};
|
|
13
|
+
export const findOneResultSchema = (config, m, query) => {
|
|
14
|
+
const model = config.models[m];
|
|
15
|
+
const obj = resultFields(model, query.select);
|
|
16
|
+
for (const [relationName, subquery] of Object.entries(query.include ?? {})) {
|
|
17
|
+
const relation = getRelation(model, relationName);
|
|
18
|
+
const schema = findOneResultSchema(config, relation.model, subquery);
|
|
19
|
+
if (relation.type === "N:1") {
|
|
20
|
+
obj[relationName] = relation.optional
|
|
21
|
+
? schema.nullish().default(null)
|
|
22
|
+
: schema;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
obj[relationName] = z.array(schema);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return z.object(obj);
|
|
29
|
+
};
|
|
30
|
+
export const findManyResultSchema = (config, m, query) => {
|
|
31
|
+
return z.array(findOneResultSchema(config, m, query));
|
|
32
|
+
};
|
|
33
|
+
export const returningOneResultSchema = (model, fields) => {
|
|
34
|
+
return fields
|
|
35
|
+
? z.object(resultFields(model, fields)).nullable()
|
|
36
|
+
: z.number();
|
|
37
|
+
};
|
|
38
|
+
export const returningManyResultSchema = (model, returning) => {
|
|
39
|
+
return returning
|
|
40
|
+
? z.array(z.object(resultFields(model, returning)))
|
|
41
|
+
: z.number();
|
|
42
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { rowToObject } from "./rowToObject.js";
|
|
3
|
+
const columns = [
|
|
4
|
+
{
|
|
5
|
+
alias: "a_0",
|
|
6
|
+
name: "id",
|
|
7
|
+
path: ["id"],
|
|
8
|
+
table: "a",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
alias: "a_1",
|
|
12
|
+
name: "title",
|
|
13
|
+
path: ["title"],
|
|
14
|
+
table: "a",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
alias: "a_2",
|
|
18
|
+
name: "content",
|
|
19
|
+
path: ["content"],
|
|
20
|
+
table: "a",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
alias: "b_0",
|
|
24
|
+
name: "id",
|
|
25
|
+
path: ["author", "id"],
|
|
26
|
+
table: "b",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
alias: "b_1",
|
|
30
|
+
name: "name",
|
|
31
|
+
path: ["author", "name"],
|
|
32
|
+
table: "b",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
alias: "c_0",
|
|
36
|
+
name: "id",
|
|
37
|
+
path: ["author", "bio", "id"],
|
|
38
|
+
table: "c",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
alias: "c_1",
|
|
42
|
+
name: "content",
|
|
43
|
+
path: ["author", "bio", "content"],
|
|
44
|
+
table: "c",
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
describe("rowToObject", () => {
|
|
48
|
+
test("it converts a flat row with column aliases into a nested object with original field names", () => {
|
|
49
|
+
expect(rowToObject({
|
|
50
|
+
a_0: 3,
|
|
51
|
+
a_1: "hello it me",
|
|
52
|
+
a_2: "a very long blog post",
|
|
53
|
+
b_0: 2,
|
|
54
|
+
b_1: "russell",
|
|
55
|
+
c_0: 5,
|
|
56
|
+
c_1: "i'm russell",
|
|
57
|
+
}, columns)).toEqual({
|
|
58
|
+
id: 3,
|
|
59
|
+
title: "hello it me",
|
|
60
|
+
content: "a very long blog post",
|
|
61
|
+
author: {
|
|
62
|
+
id: 2,
|
|
63
|
+
name: "russell",
|
|
64
|
+
bio: { id: 5, content: "i'm russell" },
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@casekit/orm2",
|
|
3
|
+
"description": "",
|
|
4
|
+
"version": "0.0.0-20250322230249",
|
|
5
|
+
"author": "",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"es-toolkit": "^1.33.0",
|
|
8
|
+
"object-hash": "^3.0.0",
|
|
9
|
+
"pino": "^9.6.0",
|
|
10
|
+
"uuid": "^11.1.0",
|
|
11
|
+
"@casekit/orm2-config": "0.0.0-20250322230249",
|
|
12
|
+
"@casekit/orm2-schema": "0.0.0-20250322230249",
|
|
13
|
+
"@casekit/sql": "0.0.0-20250322230249",
|
|
14
|
+
"@casekit/toolbox": "0.0.0-20250322230249"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@casekit/unindent": "^1.0.5",
|
|
18
|
+
"@eslint/js": "^9.23.0",
|
|
19
|
+
"@faker-js/faker": "^9.6.0",
|
|
20
|
+
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
|
21
|
+
"@types/node": "^22.13.11",
|
|
22
|
+
"@types/object-hash": "^3.0.6",
|
|
23
|
+
"@types/pg": "^8.11.11",
|
|
24
|
+
"@types/uuid": "^10.0.0",
|
|
25
|
+
"@vitest/coverage-v8": "^3.0.9",
|
|
26
|
+
"dotenv": "^16.4.7",
|
|
27
|
+
"prettier": "^3.5.3",
|
|
28
|
+
"prettier-plugin-svelte": "^3.3.3",
|
|
29
|
+
"ts-essentials": "^10.0.4",
|
|
30
|
+
"typescript": "^5.8.2",
|
|
31
|
+
"typescript-eslint": "^8.27.0",
|
|
32
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
33
|
+
"vitest": "^3.0.9",
|
|
34
|
+
"@casekit/orm2-testing": "0.0.0-20250322230249",
|
|
35
|
+
"@casekit/tsconfig": "0.0.0-20250322230249",
|
|
36
|
+
"@casekit/orm2-fixtures": "0.0.0-20250322230249",
|
|
37
|
+
"@casekit/prettier-config": "0.0.0-20250322230249"
|
|
38
|
+
},
|
|
39
|
+
"exports": {
|
|
40
|
+
".": "./build/index.js"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"/build"
|
|
44
|
+
],
|
|
45
|
+
"imports": {
|
|
46
|
+
"#*": "./build/*"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [],
|
|
49
|
+
"license": "ISC",
|
|
50
|
+
"main": "index.js",
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"pg": "^8.13.1",
|
|
53
|
+
"zod": "^3.24.2"
|
|
54
|
+
},
|
|
55
|
+
"prettier": "@casekit/prettier-config",
|
|
56
|
+
"type": "module",
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "rm -rf ./build && tsc",
|
|
59
|
+
"build:watch": "tsc --watch",
|
|
60
|
+
"format:check": "prettier --check .",
|
|
61
|
+
"format": "prettier --write .",
|
|
62
|
+
"lint": "eslint src --max-warnings 0",
|
|
63
|
+
"test": "vitest --run --typecheck --coverage",
|
|
64
|
+
"test:watch": "vitest --typecheck",
|
|
65
|
+
"typecheck": "tsc --noEmit"
|
|
66
|
+
}
|
|
67
|
+
}
|