@iamkirbki/database-handler-better-sqlite3 4.0.4 → 4.0.6
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/dist/BetterSqlite3Adapter.d.ts +1 -0
- package/dist/BetterSqlite3Adapter.d.ts.map +1 -1
- package/dist/BetterSqlite3Adapter.js +10 -0
- package/dist/BetterSqlite3SchemaBuilder.d.ts +1 -1
- package/dist/BetterSqlite3SchemaBuilder.d.ts.map +1 -1
- package/dist/BetterSqlite3TableSchemaBuilder.d.ts +19 -7
- package/dist/BetterSqlite3TableSchemaBuilder.d.ts.map +1 -1
- package/dist/BetterSqlite3TableSchemaBuilder.js +123 -21
- package/package.json +3 -2
|
@@ -6,6 +6,7 @@ export default class BetterSqlite3Adapter implements IDatabaseAdapter {
|
|
|
6
6
|
exec(query: string): Promise<void>;
|
|
7
7
|
transaction(fn: (items: unknown[]) => void): Promise<Function>;
|
|
8
8
|
tableColumnInformation(tableName: string): Promise<TableColumnInfo[]>;
|
|
9
|
+
tableExists(tableName: string): Promise<boolean>;
|
|
9
10
|
close(): Promise<void>;
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=BetterSqlite3Adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BetterSqlite3Adapter.d.ts","sourceRoot":"","sources":["../src/BetterSqlite3Adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAIxG,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,gBAAgB;IACjE,OAAO,CAAC,GAAG,CAAkC;IAEvC,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlC,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ9D,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkBrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
|
|
1
|
+
{"version":3,"file":"BetterSqlite3Adapter.d.ts","sourceRoot":"","sources":["../src/BetterSqlite3Adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAIxG,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,gBAAgB;IACjE,OAAO,CAAC,GAAG,CAAkC;IAEvC,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlC,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ9D,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkBrE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
|
|
@@ -64,6 +64,16 @@ export default class BetterSqlite3Adapter {
|
|
|
64
64
|
}));
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
+
tableExists(tableName) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
if (!this._db) {
|
|
70
|
+
throw new Error("Database is not connected.");
|
|
71
|
+
}
|
|
72
|
+
const stmt = this._db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`);
|
|
73
|
+
const row = stmt.get(tableName);
|
|
74
|
+
return !!row;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
67
77
|
close() {
|
|
68
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
79
|
if (!this._db) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BetterSqlite3TableSchemaBuilder } from "./BetterSqlite3TableSchemaBuilder.js";
|
|
2
2
|
import BetterSqlite3Adapter from "./BetterSqlite3Adapter.js";
|
|
3
|
-
import AbstractSchemaBuilder from "@core
|
|
3
|
+
import { AbstractSchemaBuilder } from "@iamkirbki/database-handler-core";
|
|
4
4
|
export declare class BetterSqlite3SchemaBuilder implements AbstractSchemaBuilder {
|
|
5
5
|
private _adapter;
|
|
6
6
|
constructor(_adapter: BetterSqlite3Adapter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BetterSqlite3SchemaBuilder.d.ts","sourceRoot":"","sources":["../src/BetterSqlite3SchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,qBAAqB,MAAM,
|
|
1
|
+
{"version":3,"file":"BetterSqlite3SchemaBuilder.d.ts","sourceRoot":"","sources":["../src/BetterSqlite3SchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,qBAAa,0BAA2B,YAAW,qBAAqB;IAExD,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG5C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,+BAA+B,KAAK,IAAI;IAWpF,SAAS,CAAC,IAAI,EAAE,MAAM;IAOtB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,+BAA+B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAcjH"}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import { SchemaTableBuilder } from "@iamkirbki/database-handler-core";
|
|
2
2
|
export declare class BetterSqlite3TableSchemaBuilder extends SchemaTableBuilder {
|
|
3
3
|
build(): string;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
boolean(name
|
|
4
|
+
uuid(name: string): this;
|
|
5
|
+
string(name: string, length?: number): this;
|
|
6
|
+
text(name: string): this;
|
|
7
|
+
integer(name: string): this;
|
|
8
|
+
decimal(name: string, precision?: number, scale?: number): this;
|
|
9
|
+
float(name: string): this;
|
|
10
|
+
boolean(name: string): this;
|
|
11
|
+
json(name: string): this;
|
|
12
|
+
enum(name: string, values: string[]): this;
|
|
13
|
+
timestamp(name: string): this;
|
|
14
|
+
time(name: string): this;
|
|
11
15
|
timestamps(): this;
|
|
16
|
+
increments(): this;
|
|
17
|
+
primaryKey(): this;
|
|
18
|
+
foreignKey(referenceTable: string, referenceColumn: string): this;
|
|
19
|
+
unique(): this;
|
|
20
|
+
nullable(): this;
|
|
21
|
+
defaultTo(value: unknown): this;
|
|
22
|
+
softDeletes(): this;
|
|
23
|
+
morphs(name: string): this;
|
|
12
24
|
}
|
|
13
25
|
//# sourceMappingURL=BetterSqlite3TableSchemaBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BetterSqlite3TableSchemaBuilder.d.ts","sourceRoot":"","sources":["../src/BetterSqlite3TableSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,qBAAa,+BAAgC,SAAQ,kBAAkB;IACnE,KAAK,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"BetterSqlite3TableSchemaBuilder.d.ts","sourceRoot":"","sources":["../src/BetterSqlite3TableSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,qBAAa,+BAAgC,SAAQ,kBAAkB;IACnE,KAAK,IAAI,MAAM;IAmBf,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOxB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAO3C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAW/D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAU1C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB,UAAU,IAAI,IAAI;IAiBlB,UAAU;IASV,UAAU,IAAI,IAAI;IASlB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAWjE,MAAM,IAAI,IAAI;IASd,QAAQ,IAAI,IAAI;IAShB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAmB/B,WAAW,IAAI,IAAI;IASnB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAI7B"}
|
|
@@ -13,44 +13,45 @@ export class BetterSqlite3TableSchemaBuilder extends SchemaTableBuilder {
|
|
|
13
13
|
});
|
|
14
14
|
return `(${columnDefinitions.join(', ')})`;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
// Datatypes
|
|
17
|
+
uuid(name) {
|
|
17
18
|
return this.addColumn({
|
|
18
19
|
name,
|
|
19
|
-
|
|
20
|
+
datatype: 'UUID',
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
string(name, length) {
|
|
23
24
|
return this.addColumn({
|
|
24
25
|
name,
|
|
25
|
-
|
|
26
|
+
datatype: length ? `VARCHAR(${length})` : 'VARCHAR',
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
constraints: [constraint],
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return this;
|
|
29
|
+
text(name) {
|
|
30
|
+
return this.addColumn({
|
|
31
|
+
name,
|
|
32
|
+
datatype: 'TEXT',
|
|
33
|
+
});
|
|
37
34
|
}
|
|
38
|
-
|
|
35
|
+
integer(name) {
|
|
39
36
|
return this.addColumn({
|
|
40
37
|
name,
|
|
41
|
-
datatype: '
|
|
38
|
+
datatype: 'INTEGER',
|
|
42
39
|
});
|
|
43
40
|
}
|
|
44
|
-
|
|
41
|
+
decimal(name, precision, scale) {
|
|
42
|
+
let datatype = 'DECIMAL';
|
|
43
|
+
if (precision !== undefined && scale !== undefined) {
|
|
44
|
+
datatype = `DECIMAL(${precision},${scale})`;
|
|
45
|
+
}
|
|
45
46
|
return this.addColumn({
|
|
46
47
|
name,
|
|
47
|
-
datatype
|
|
48
|
+
datatype,
|
|
48
49
|
});
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
+
float(name) {
|
|
51
52
|
return this.addColumn({
|
|
52
53
|
name,
|
|
53
|
-
datatype: '
|
|
54
|
+
datatype: 'REAL',
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
boolean(name) {
|
|
@@ -59,17 +60,118 @@ export class BetterSqlite3TableSchemaBuilder extends SchemaTableBuilder {
|
|
|
59
60
|
datatype: 'BOOLEAN',
|
|
60
61
|
});
|
|
61
62
|
}
|
|
63
|
+
json(name) {
|
|
64
|
+
// SQLite does not have a native JSON type, but uses TEXT
|
|
65
|
+
return this.addColumn({
|
|
66
|
+
name,
|
|
67
|
+
datatype: 'TEXT',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
enum(name, values) {
|
|
71
|
+
// SQLite does not have a native ENUM type, but we can use a CHECK constraint
|
|
72
|
+
const quotedValues = values.map(v => `'${v.replace(/'/g, "''")}'`).join(', ');
|
|
73
|
+
return this.addColumn({
|
|
74
|
+
name,
|
|
75
|
+
datatype: 'TEXT',
|
|
76
|
+
constraints: [`CHECK (${name} IN (${quotedValues}))`],
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
timestamp(name) {
|
|
80
|
+
return this.addColumn({
|
|
81
|
+
name,
|
|
82
|
+
datatype: 'DATETIME',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
time(name) {
|
|
86
|
+
// SQLite does not have a TIME type, but uses TEXT
|
|
87
|
+
return this.addColumn({
|
|
88
|
+
name,
|
|
89
|
+
datatype: 'TEXT',
|
|
90
|
+
});
|
|
91
|
+
}
|
|
62
92
|
timestamps() {
|
|
63
93
|
this.addColumn({
|
|
64
94
|
name: 'created_at',
|
|
65
95
|
datatype: 'DATETIME',
|
|
66
|
-
constraints: ['
|
|
96
|
+
constraints: ['DEFAULT CURRENT_TIMESTAMP'],
|
|
67
97
|
});
|
|
68
98
|
this.addColumn({
|
|
69
99
|
name: 'updated_at',
|
|
70
100
|
datatype: 'DATETIME',
|
|
71
|
-
constraints: ['
|
|
101
|
+
constraints: ['DEFAULT CURRENT_TIMESTAMP'],
|
|
72
102
|
});
|
|
73
103
|
return this;
|
|
74
104
|
}
|
|
105
|
+
// Constraints
|
|
106
|
+
increments() {
|
|
107
|
+
if (this.columns.length === 0) {
|
|
108
|
+
throw new Error('increments() requires a previous column. Call a datatype method first.');
|
|
109
|
+
}
|
|
110
|
+
return this.addColumn({
|
|
111
|
+
autoincrement: true,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
primaryKey() {
|
|
115
|
+
if (this.columns.length === 0) {
|
|
116
|
+
throw new Error('primaryKey() requires a previous column. Call a datatype method first.');
|
|
117
|
+
}
|
|
118
|
+
return this.addColumn({
|
|
119
|
+
constraints: ['PRIMARY KEY'],
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
foreignKey(referenceTable, referenceColumn) {
|
|
123
|
+
if (this.columns.length === 0) {
|
|
124
|
+
throw new Error('foreignKey() requires a previous column. Call a datatype method first.');
|
|
125
|
+
}
|
|
126
|
+
const lastColumn = this.columns[this.columns.length - 1];
|
|
127
|
+
const constraint = `FOREIGN KEY(${lastColumn.name}) REFERENCES ${referenceTable}(${referenceColumn})`;
|
|
128
|
+
return this.addColumn({
|
|
129
|
+
constraints: [constraint],
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
unique() {
|
|
133
|
+
if (this.columns.length === 0) {
|
|
134
|
+
throw new Error('unique() requires a previous column. Call a datatype method first.');
|
|
135
|
+
}
|
|
136
|
+
return this.addColumn({
|
|
137
|
+
constraints: ['UNIQUE'],
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
nullable() {
|
|
141
|
+
if (this.columns.length === 0) {
|
|
142
|
+
throw new Error('nullable() requires a previous column. Call a datatype method first.');
|
|
143
|
+
}
|
|
144
|
+
return this.addColumn({
|
|
145
|
+
constraints: ['NULLABLE'],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
defaultTo(value) {
|
|
149
|
+
if (this.columns.length === 0) {
|
|
150
|
+
throw new Error('defaultTo() requires a previous column. Call a datatype method first.');
|
|
151
|
+
}
|
|
152
|
+
let defaultValue;
|
|
153
|
+
if (typeof value === 'string') {
|
|
154
|
+
defaultValue = `'${value}'`;
|
|
155
|
+
}
|
|
156
|
+
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
157
|
+
defaultValue = value;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
defaultValue = String(value);
|
|
161
|
+
}
|
|
162
|
+
return this.addColumn({
|
|
163
|
+
constraints: [`DEFAULT ${defaultValue}`],
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
softDeletes() {
|
|
167
|
+
this.addColumn({
|
|
168
|
+
name: 'deleted_at',
|
|
169
|
+
datatype: 'DATETIME',
|
|
170
|
+
});
|
|
171
|
+
return this.nullable();
|
|
172
|
+
}
|
|
173
|
+
morphs(name) {
|
|
174
|
+
this.integer(`${name}_id`);
|
|
175
|
+
return this.string(`${name}_type`);
|
|
176
|
+
}
|
|
75
177
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iamkirbki/database-handler-better-sqlite3",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6",
|
|
4
4
|
"author": "iamkirbki",
|
|
5
5
|
"description": "Better-sqlite3 adapter for @kirbkis-database-handler/core",
|
|
6
6
|
"license": "ISC",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
23
23
|
"url": "https://github.com/IamKirbki/npm-database-handler.git",
|
|
24
|
-
"directory": "packages/
|
|
24
|
+
"directory": "packages/bettersqlite3"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "tsc --build && tsc-alias"
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/better-sqlite3": "^7.6.13",
|
|
35
|
+
"@types/node": "^24.10.1",
|
|
35
36
|
"typescript": "^5.9.3",
|
|
36
37
|
"tsc-alias": "^1.8.16"
|
|
37
38
|
}
|