@b4moss/crudian 0.3.1
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/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/bun-sqlite/crud.d.ts +9 -0
- package/dist/bun-sqlite/crud.d.ts.map +1 -0
- package/dist/bun-sqlite/crud.js +32 -0
- package/dist/bun-sqlite/index.d.ts +9 -0
- package/dist/bun-sqlite/index.d.ts.map +1 -0
- package/dist/bun-sqlite/index.js +8 -0
- package/dist/bun-sqlite/node-stub.d.ts +2 -0
- package/dist/bun-sqlite/node-stub.d.ts.map +1 -0
- package/dist/bun-sqlite/node-stub.js +2 -0
- package/dist/bun-sqlite/sql.d.ts +2 -0
- package/dist/bun-sqlite/sql.d.ts.map +1 -0
- package/dist/bun-sqlite/sql.js +1 -0
- package/dist/drizzle/crud.d.ts +14 -0
- package/dist/drizzle/crud.d.ts.map +1 -0
- package/dist/drizzle/crud.js +33 -0
- package/dist/drizzle/index.d.ts +8 -0
- package/dist/drizzle/index.d.ts.map +1 -0
- package/dist/drizzle/index.js +6 -0
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +13 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/prisma/crud.d.ts +14 -0
- package/dist/prisma/crud.d.ts.map +1 -0
- package/dist/prisma/crud.js +53 -0
- package/dist/prisma/index.d.ts +8 -0
- package/dist/prisma/index.d.ts.map +1 -0
- package/dist/prisma/index.js +6 -0
- package/dist/sqlite/async-crud.d.ts +27 -0
- package/dist/sqlite/async-crud.d.ts.map +1 -0
- package/dist/sqlite/async-crud.js +237 -0
- package/dist/sqlite/sql.d.ts +8 -0
- package/dist/sqlite/sql.d.ts.map +1 -0
- package/dist/sqlite/sql.js +72 -0
- package/dist/sqlite/sync-crud.d.ts +27 -0
- package/dist/sqlite/sync-crud.d.ts.map +1 -0
- package/dist/sqlite/sync-crud.js +237 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/where.d.ts +36 -0
- package/dist/where.d.ts.map +1 -0
- package/dist/where.js +75 -0
- package/package.json +91 -0
package/dist/where.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { CrudianError, assertString } from "./errors.js";
|
|
2
|
+
function cond(op, column, value) {
|
|
3
|
+
assertString(column, "column");
|
|
4
|
+
return { type: "cond", op, column, value };
|
|
5
|
+
}
|
|
6
|
+
/** Public where builder. Tree shape is an internal representation via `toNode()`. */
|
|
7
|
+
export class WhereBuilder {
|
|
8
|
+
node;
|
|
9
|
+
constructor(node) {
|
|
10
|
+
this.node = node;
|
|
11
|
+
}
|
|
12
|
+
static create() {
|
|
13
|
+
return new WhereBuilder({ type: "and", children: [] });
|
|
14
|
+
}
|
|
15
|
+
static from(node) {
|
|
16
|
+
return new WhereBuilder(node);
|
|
17
|
+
}
|
|
18
|
+
appendCond(op, column, value) {
|
|
19
|
+
const next = cond(op, column, value);
|
|
20
|
+
if (this.node.type === "and") {
|
|
21
|
+
return new WhereBuilder({ type: "and", children: [...this.node.children, next] });
|
|
22
|
+
}
|
|
23
|
+
return new WhereBuilder({ type: "and", children: [this.node, next] });
|
|
24
|
+
}
|
|
25
|
+
eq(column, value) {
|
|
26
|
+
return this.appendCond("eq", column, value);
|
|
27
|
+
}
|
|
28
|
+
ne(column, value) {
|
|
29
|
+
return this.appendCond("ne", column, value);
|
|
30
|
+
}
|
|
31
|
+
lt(column, value) {
|
|
32
|
+
return this.appendCond("lt", column, value);
|
|
33
|
+
}
|
|
34
|
+
gt(column, value) {
|
|
35
|
+
return this.appendCond("gt", column, value);
|
|
36
|
+
}
|
|
37
|
+
lte(column, value) {
|
|
38
|
+
return this.appendCond("lte", column, value);
|
|
39
|
+
}
|
|
40
|
+
gte(column, value) {
|
|
41
|
+
return this.appendCond("gte", column, value);
|
|
42
|
+
}
|
|
43
|
+
in(column, value) {
|
|
44
|
+
if (!Array.isArray(value)) {
|
|
45
|
+
throw new CrudianError("in value must be an array");
|
|
46
|
+
}
|
|
47
|
+
return this.appendCond("in", column, value);
|
|
48
|
+
}
|
|
49
|
+
like(column, value) {
|
|
50
|
+
return this.appendCond("like", column, value);
|
|
51
|
+
}
|
|
52
|
+
isNull(column) {
|
|
53
|
+
return this.appendCond("isNull", column);
|
|
54
|
+
}
|
|
55
|
+
isNotNull(column) {
|
|
56
|
+
return this.appendCond("isNotNull", column);
|
|
57
|
+
}
|
|
58
|
+
and(...others) {
|
|
59
|
+
const children = [this.toNode(), ...others.map((b) => b.toNode())];
|
|
60
|
+
return new WhereBuilder({ type: "and", children });
|
|
61
|
+
}
|
|
62
|
+
or(...others) {
|
|
63
|
+
const children = [this.toNode(), ...others.map((b) => b.toNode())];
|
|
64
|
+
return new WhereBuilder({ type: "or", children });
|
|
65
|
+
}
|
|
66
|
+
toNode() {
|
|
67
|
+
return this.node;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function where() {
|
|
71
|
+
return WhereBuilder.create();
|
|
72
|
+
}
|
|
73
|
+
export function isWhereBuilder(value) {
|
|
74
|
+
return value instanceof WhereBuilder;
|
|
75
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@b4moss/crudian",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "CRUD abstraction for DDD repositories",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./bun-sqlite": {
|
|
14
|
+
"types": "./dist/bun-sqlite/index.d.ts",
|
|
15
|
+
"bun": "./dist/bun-sqlite/index.js",
|
|
16
|
+
"import": "./dist/bun-sqlite/node-stub.js",
|
|
17
|
+
"default": "./dist/bun-sqlite/node-stub.js"
|
|
18
|
+
},
|
|
19
|
+
"./drizzle": {
|
|
20
|
+
"types": "./dist/drizzle/index.d.ts",
|
|
21
|
+
"import": "./dist/drizzle/index.js",
|
|
22
|
+
"default": "./dist/drizzle/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./prisma": {
|
|
25
|
+
"types": "./dist/prisma/index.d.ts",
|
|
26
|
+
"import": "./dist/prisma/index.js",
|
|
27
|
+
"default": "./dist/prisma/index.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"LICENSE",
|
|
33
|
+
"README.md"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsc -p tsconfig.json",
|
|
37
|
+
"prepublishOnly": "npm run build",
|
|
38
|
+
"prisma:generate": "prisma generate --schema prisma/schema.prisma",
|
|
39
|
+
"test": "bun run test:bun-sqlite && bun run test:drizzle && bun run test:prisma",
|
|
40
|
+
"test:bun-sqlite": "bun test src/bun-sqlite",
|
|
41
|
+
"test:drizzle": "tsx --test src/drizzle/crud.test.ts",
|
|
42
|
+
"test:prisma": "bun run prisma:generate && tsx --test src/prisma/crud.test.ts"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=22",
|
|
46
|
+
"bun": ">=1.0.0"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"@prisma/client": "^6.0.0",
|
|
50
|
+
"better-sqlite3": "^11.0.0",
|
|
51
|
+
"drizzle-orm": "^0.39.0 || ^0.40.0 || ^0.41.0 || ^0.44.0"
|
|
52
|
+
},
|
|
53
|
+
"peerDependenciesMeta": {
|
|
54
|
+
"@prisma/client": {
|
|
55
|
+
"optional": true
|
|
56
|
+
},
|
|
57
|
+
"better-sqlite3": {
|
|
58
|
+
"optional": true
|
|
59
|
+
},
|
|
60
|
+
"drizzle-orm": {
|
|
61
|
+
"optional": true
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@prisma/client": "^6.14.0",
|
|
66
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
67
|
+
"better-sqlite3": "^11.10.0",
|
|
68
|
+
"bun-types": "^1.2.0",
|
|
69
|
+
"drizzle-orm": "^0.44.4",
|
|
70
|
+
"prisma": "^6.14.0",
|
|
71
|
+
"tsx": "^4.23.12",
|
|
72
|
+
"typescript": "^5.8.0"
|
|
73
|
+
},
|
|
74
|
+
"keywords": [
|
|
75
|
+
"crud",
|
|
76
|
+
"repository",
|
|
77
|
+
"sqlite",
|
|
78
|
+
"bun",
|
|
79
|
+
"drizzle",
|
|
80
|
+
"prisma",
|
|
81
|
+
"ddd"
|
|
82
|
+
],
|
|
83
|
+
"repository": {
|
|
84
|
+
"type": "git",
|
|
85
|
+
"url": "git+https://github.com/b4moss/crudian.git",
|
|
86
|
+
"directory": "packages/js"
|
|
87
|
+
},
|
|
88
|
+
"publishConfig": {
|
|
89
|
+
"access": "public"
|
|
90
|
+
}
|
|
91
|
+
}
|