@zyraxon-ai/effect-drizzle-sqlite 19.0.5
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/effect-sqlite/driver.d.ts +44 -0
- package/dist/effect-sqlite/driver.d.ts.map +1 -0
- package/dist/effect-sqlite/driver.js +55 -0
- package/dist/effect-sqlite/driver.js.map +1 -0
- package/dist/effect-sqlite/index.d.ts +4 -0
- package/dist/effect-sqlite/index.d.ts.map +1 -0
- package/dist/effect-sqlite/index.js +5 -0
- package/dist/effect-sqlite/index.js.map +1 -0
- package/dist/effect-sqlite/migrator.d.ts +5 -0
- package/dist/effect-sqlite/migrator.d.ts.map +1 -0
- package/dist/effect-sqlite/migrator.js +7 -0
- package/dist/effect-sqlite/migrator.js.map +1 -0
- package/dist/effect-sqlite/session.d.ts +48 -0
- package/dist/effect-sqlite/session.d.ts.map +1 -0
- package/dist/effect-sqlite/session.js +78 -0
- package/dist/effect-sqlite/session.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/drizzle-utils.d.ts +21 -0
- package/dist/internal/drizzle-utils.d.ts.map +1 -0
- package/dist/internal/drizzle-utils.js +96 -0
- package/dist/internal/drizzle-utils.js.map +1 -0
- package/dist/sqlite-core/effect/count.d.ts +21 -0
- package/dist/sqlite-core/effect/count.d.ts.map +1 -0
- package/dist/sqlite-core/effect/count.js +31 -0
- package/dist/sqlite-core/effect/count.js.map +1 -0
- package/dist/sqlite-core/effect/db.d.ts +83 -0
- package/dist/sqlite-core/effect/db.d.ts.map +1 -0
- package/dist/sqlite-core/effect/db.js +168 -0
- package/dist/sqlite-core/effect/db.js.map +1 -0
- package/dist/sqlite-core/effect/delete.d.ts +70 -0
- package/dist/sqlite-core/effect/delete.d.ts.map +1 -0
- package/dist/sqlite-core/effect/delete.js +77 -0
- package/dist/sqlite-core/effect/delete.js.map +1 -0
- package/dist/sqlite-core/effect/index.d.ts +10 -0
- package/dist/sqlite-core/effect/index.d.ts.map +1 -0
- package/dist/sqlite-core/effect/index.js +11 -0
- package/dist/sqlite-core/effect/index.js.map +1 -0
- package/dist/sqlite-core/effect/insert.d.ts +96 -0
- package/dist/sqlite-core/effect/insert.d.ts.map +1 -0
- package/dist/sqlite-core/effect/insert.js +124 -0
- package/dist/sqlite-core/effect/insert.js.map +1 -0
- package/dist/sqlite-core/effect/query.d.ts +64 -0
- package/dist/sqlite-core/effect/query.d.ts.map +1 -0
- package/dist/sqlite-core/effect/query.js +105 -0
- package/dist/sqlite-core/effect/query.js.map +1 -0
- package/dist/sqlite-core/effect/raw.d.ts +33 -0
- package/dist/sqlite-core/effect/raw.d.ts.map +1 -0
- package/dist/sqlite-core/effect/raw.js +30 -0
- package/dist/sqlite-core/effect/raw.js.map +1 -0
- package/dist/sqlite-core/effect/select.d.ts +65 -0
- package/dist/sqlite-core/effect/select.d.ts.map +1 -0
- package/dist/sqlite-core/effect/select.js +106 -0
- package/dist/sqlite-core/effect/select.js.map +1 -0
- package/dist/sqlite-core/effect/session.d.ts +89 -0
- package/dist/sqlite-core/effect/session.d.ts.map +1 -0
- package/dist/sqlite-core/effect/session.js +280 -0
- package/dist/sqlite-core/effect/session.js.map +1 -0
- package/dist/sqlite-core/effect/update.d.ts +91 -0
- package/dist/sqlite-core/effect/update.d.ts.map +1 -0
- package/dist/sqlite-core/effect/update.js +125 -0
- package/dist/sqlite-core/effect/update.js.map +1 -0
- package/dist/up-migrations/effect-sqlite.d.ts +9 -0
- package/dist/up-migrations/effect-sqlite.d.ts.map +1 -0
- package/dist/up-migrations/effect-sqlite.js +50 -0
- package/dist/up-migrations/effect-sqlite.js.map +1 -0
- package/dist/up-migrations/sqlite.d.ts +54 -0
- package/dist/up-migrations/sqlite.d.ts.map +1 -0
- package/dist/up-migrations/sqlite.js +152 -0
- package/dist/up-migrations/sqlite.js.map +1 -0
- package/dist/up-migrations/utils.d.ts +22 -0
- package/dist/up-migrations/utils.d.ts.map +1 -0
- package/dist/up-migrations/utils.js +47 -0
- package/dist/up-migrations/utils.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { applyEffectWrapper } from "drizzle-orm/effect-core/query-effect";
|
|
2
|
+
import { entityKind, is } from "drizzle-orm/entity";
|
|
3
|
+
import { SelectionProxyHandler } from "drizzle-orm/selection-proxy";
|
|
4
|
+
import { SQLiteTable } from "drizzle-orm/sqlite-core/table";
|
|
5
|
+
import { extractUsedTable } from "drizzle-orm/sqlite-core/utils";
|
|
6
|
+
import { SQLiteViewBase } from "drizzle-orm/sqlite-core/view-base";
|
|
7
|
+
import { Subquery } from "drizzle-orm/subquery";
|
|
8
|
+
import { getTableColumnsRuntime, getTableLikeName, getViewSelectedFieldsRuntime, mapUpdateSet, orderSelectedFields, } from "../../internal/drizzle-utils";
|
|
9
|
+
export class SQLiteEffectUpdateBuilder {
|
|
10
|
+
table;
|
|
11
|
+
session;
|
|
12
|
+
dialect;
|
|
13
|
+
withList;
|
|
14
|
+
static [entityKind] = "SQLiteEffectUpdateBuilder";
|
|
15
|
+
constructor(table, session, dialect, withList) {
|
|
16
|
+
this.table = table;
|
|
17
|
+
this.session = session;
|
|
18
|
+
this.dialect = dialect;
|
|
19
|
+
this.withList = withList;
|
|
20
|
+
}
|
|
21
|
+
set(values) {
|
|
22
|
+
return new SQLiteEffectUpdateBase(this.table, mapUpdateSet(this.table, values), this.session, this.dialect, this.withList);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class SQLiteEffectUpdateBase {
|
|
26
|
+
effectSession;
|
|
27
|
+
effectDialect;
|
|
28
|
+
static [entityKind] = "SQLiteEffectUpdate";
|
|
29
|
+
/** @internal */
|
|
30
|
+
config;
|
|
31
|
+
constructor(table, set, effectSession, effectDialect, withList) {
|
|
32
|
+
this.effectSession = effectSession;
|
|
33
|
+
this.effectDialect = effectDialect;
|
|
34
|
+
this.config = { set, table, withList, joins: [] };
|
|
35
|
+
}
|
|
36
|
+
from(source) {
|
|
37
|
+
this.config.from = source;
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
createJoin(joinType) {
|
|
41
|
+
return ((table, on) => {
|
|
42
|
+
const tableName = getTableLikeName(table);
|
|
43
|
+
if (typeof tableName === "string" && this.config.joins.some((join) => join.alias === tableName)) {
|
|
44
|
+
throw new Error(`Alias "${tableName}" is already used in this query`);
|
|
45
|
+
}
|
|
46
|
+
if (typeof on === "function") {
|
|
47
|
+
const from = this.config.from
|
|
48
|
+
? is(table, SQLiteTable)
|
|
49
|
+
? getTableColumnsRuntime(table)
|
|
50
|
+
: is(table, Subquery)
|
|
51
|
+
? table._.selectedFields
|
|
52
|
+
: is(table, SQLiteViewBase)
|
|
53
|
+
? getViewSelectedFieldsRuntime(table).selectedFields
|
|
54
|
+
: undefined
|
|
55
|
+
: undefined;
|
|
56
|
+
on = on(new Proxy(this.config.table._.columns, new SelectionProxyHandler({ sqlAliasedBehavior: "sql", sqlBehavior: "sql" })), from &&
|
|
57
|
+
new Proxy(from, new SelectionProxyHandler({ sqlAliasedBehavior: "sql", sqlBehavior: "sql" })));
|
|
58
|
+
}
|
|
59
|
+
this.config.joins.push({ on, table, joinType, alias: tableName });
|
|
60
|
+
return this;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
leftJoin = this.createJoin("left");
|
|
64
|
+
rightJoin = this.createJoin("right");
|
|
65
|
+
innerJoin = this.createJoin("inner");
|
|
66
|
+
fullJoin = this.createJoin("full");
|
|
67
|
+
where(where) {
|
|
68
|
+
this.config.where = where;
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
orderBy(...columns) {
|
|
72
|
+
if (typeof columns[0] === "function") {
|
|
73
|
+
const orderBy = columns[0](new Proxy(getTableColumnsRuntime(this.config.table), new SelectionProxyHandler({ sqlAliasedBehavior: "alias", sqlBehavior: "sql" })));
|
|
74
|
+
this.config.orderBy = Array.isArray(orderBy) ? orderBy : [orderBy];
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
this.config.orderBy = columns;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
limit(limit) {
|
|
81
|
+
this.config.limit = limit;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
returning(fields = getTableColumnsRuntime(this.config.table)) {
|
|
85
|
+
this.config.returning = orderSelectedFields(fields);
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
/** @internal */
|
|
89
|
+
getSQL() {
|
|
90
|
+
return this.effectDialect.buildUpdateQuery(this.config);
|
|
91
|
+
}
|
|
92
|
+
toSQL() {
|
|
93
|
+
return this.effectDialect.sqlToQuery(this.getSQL());
|
|
94
|
+
}
|
|
95
|
+
/** @internal */
|
|
96
|
+
_prepare(isOneTimeQuery = true) {
|
|
97
|
+
return this.effectSession[isOneTimeQuery ? "prepareOneTimeQuery" : "prepareQuery"](this.effectDialect.sqlToQuery(this.getSQL()), this.config.returning, this.config.returning ? "all" : "run", undefined, {
|
|
98
|
+
type: "update",
|
|
99
|
+
tables: extractUsedTable(this.config.table),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
prepare() {
|
|
103
|
+
return this._prepare(false);
|
|
104
|
+
}
|
|
105
|
+
run = (placeholderValues) => {
|
|
106
|
+
return this._prepare().run(placeholderValues);
|
|
107
|
+
};
|
|
108
|
+
all = (placeholderValues) => {
|
|
109
|
+
return this._prepare().all(placeholderValues);
|
|
110
|
+
};
|
|
111
|
+
get = (placeholderValues) => {
|
|
112
|
+
return this._prepare().get(placeholderValues);
|
|
113
|
+
};
|
|
114
|
+
values = (placeholderValues) => {
|
|
115
|
+
return this._prepare().values(placeholderValues);
|
|
116
|
+
};
|
|
117
|
+
execute = (placeholderValues) => {
|
|
118
|
+
return this._prepare().execute(placeholderValues);
|
|
119
|
+
};
|
|
120
|
+
$dynamic() {
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
applyEffectWrapper(SQLiteEffectUpdateBase);
|
|
125
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/sqlite-core/effect/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,sCAAsC,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAMnE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,YAAY,EACZ,mBAAmB,GACpB,MAAM,8BAA8B,CAAA;AAuIrC,MAAM,OAAO,yBAAyB;IAYxB;IACA;IACA;IACF;IAVV,MAAM,CAAU,CAAC,UAAU,CAAC,GAAW,2BAA2B,CAAA;IAMlE,YACY,KAAa,EACb,OAAyD,EACzD,OAAsB,EACxB,QAAqB;QAHnB,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAAkD;QACzD,YAAO,GAAP,OAAO,CAAe;QACxB,aAAQ,GAAR,QAAQ,CAAa;IAC5B,CAAC;IAEJ,GAAG,CACD,MAAqC;QAMrC,OAAO,IAAI,sBAAsB,CAC/B,IAAI,CAAC,KAAK,EACV,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAChC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,CACP,CAAA;IACV,CAAC;;AAgCH,MAAM,OAAO,sBAAsB;IAmBvB;IACA;IATV,MAAM,CAAU,CAAC,UAAU,CAAC,GAAW,oBAAoB,CAAA;IAE3D,gBAAgB;IAChB,MAAM,CAAoB;IAE1B,YACE,KAAa,EACb,GAAc,EACN,aAA+D,EAC/D,aAA4B,EACpC,QAAqB;QAFb,kBAAa,GAAb,aAAa,CAAkD;QAC/D,kBAAa,GAAb,aAAa,CAAe;QAGpC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IACnD,CAAC;IAED,IAAI,CACF,MAAa;QAEb,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAA;QACzB,OAAO,IAAW,CAAA;IACpB,CAAC;IAEO,UAAU,CAChB,QAAmB;QAEnB,OAAO,CAAC,CACN,KAAoD,EACpD,EAA6E,EAC7E,EAAE;YACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAEzC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;gBAChG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,iCAAiC,CAAC,CAAA;YACvE,CAAC;YAED,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;oBAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;wBACtB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC;wBAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;4BACnB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc;4BACxB,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;gCACzB,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,cAAc;gCACpD,CAAC,CAAC,SAAS;oBACjB,CAAC,CAAC,SAAS,CAAA;gBACb,EAAE,GAAG,EAAE,CACL,IAAI,KAAK,CACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAC3B,IAAI,qBAAqB,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CACtE,EACR,IAAI;oBACD,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,qBAAqB,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAS,CACzG,CAAA;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YAEjE,OAAO,IAAW,CAAA;QACpB,CAAC,CAAQ,CAAA;IACX,CAAC;IAED,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAElC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAEpC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAEpC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAElC,KAAK,CAAC,KAAsB;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QACzB,OAAO,IAAW,CAAA;IACpB,CAAC;IAMD,OAAO,CACL,GAAG,OAEqC;QAExC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CACxB,IAAI,KAAK,CACP,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,IAAI,qBAAqB,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CACxE,CACT,CAAA;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YAClE,OAAO,IAAW,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAA+C,CAAA;QACrE,OAAO,IAAW,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,KAA2B;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QACzB,OAAO,IAAW,CAAA;IACpB,CAAC;IAMD,SAAS,CACP,SAAyB,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAe,MAAM,CAAC,CAAA;QACjE,OAAO,IAAW,CAAA;IACpB,CAAC;IAED,gBAAgB;IAChB,MAAM;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,gBAAgB;IAChB,QAAQ,CAAC,cAAc,GAAG,IAAI;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,CAAC,CAChF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EACrC,SAAS,EACT;YACE,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5C,CAC6C,CAAA;IAClD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,GAAuC,CAAC,iBAAiB,EAAE,EAAE;QAC9D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,GAAG,GAAuC,CAAC,iBAAiB,EAAE,EAAE;QAC9D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,GAAG,GAAuC,CAAC,iBAAiB,EAAE,EAAE;QAC9D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,MAAM,GAA0C,CAAC,iBAAiB,EAAE,EAAE;QACpE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClD,CAAC,CAAA;IAED,OAAO,GAA2C,CAAC,iBAAiB,EAAE,EAAE;QACtE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,QAAQ;QACN,OAAO,IAAW,CAAA;IACpB,CAAC;;AAGH,kBAAkB,CAAC,sBAAsB,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type { SqlError } from "effect/unstable/sql/SqlError";
|
|
3
|
+
import { EffectDrizzleError } from "drizzle-orm/effect-core/errors";
|
|
4
|
+
import type { QueryEffectHKTBase } from "drizzle-orm/effect-core/query-effect";
|
|
5
|
+
import type { MigrationMeta } from "drizzle-orm/migrator";
|
|
6
|
+
import type { SQLiteEffectSession } from "../sqlite-core/effect/session";
|
|
7
|
+
import { type UpgradeResult } from "./utils";
|
|
8
|
+
export declare const upgradeIfNeeded: <TEffectHKT extends QueryEffectHKTBase>(migrationsTable: string, session: SQLiteEffectSession<TEffectHKT>, localMigrations: MigrationMeta[]) => Effect.Effect<UpgradeResult, EffectDrizzleError | TEffectHKT["error"] | SqlError, TEffectHKT["context"]>;
|
|
9
|
+
//# sourceMappingURL=effect-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-sqlite.d.ts","sourceRoot":"","sources":["../../src/up-migrations/effect-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAMxE,OAAO,EAA8C,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAWxF,eAAO,MAAM,eAAe,EAAE,CAAC,UAAU,SAAS,kBAAkB,EAClE,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACxC,eAAe,EAAE,aAAa,EAAE,KAC7B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAgCxG,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* oxlint-disable */
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { EffectDrizzleError } from "drizzle-orm/effect-core/errors";
|
|
4
|
+
import { sql } from "drizzle-orm/sql/sql";
|
|
5
|
+
import { buildSQLiteMigrationBackfillStatements, prepareSQLiteMigrationBackfill, } from "./sqlite";
|
|
6
|
+
import { GET_VERSION_FOR, MIGRATIONS_TABLE_VERSIONS } from "./utils";
|
|
7
|
+
const migrationUpgradeError = (cause) => new EffectDrizzleError({
|
|
8
|
+
message: typeof cause === "object" && cause !== null && "message" in cause && typeof cause.message === "string"
|
|
9
|
+
? cause.message
|
|
10
|
+
: String(cause),
|
|
11
|
+
cause,
|
|
12
|
+
});
|
|
13
|
+
export const upgradeIfNeeded = Effect.fn("upgradeIfNeeded")(function* (migrationsTable, session, localMigrations) {
|
|
14
|
+
const tableExists = yield* session.all(sql `SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ${migrationsTable}`);
|
|
15
|
+
if (tableExists.length === 0) {
|
|
16
|
+
return { newDb: true };
|
|
17
|
+
}
|
|
18
|
+
const rows = yield* session.all(sql `SELECT name as column_name FROM pragma_table_info(${migrationsTable})`);
|
|
19
|
+
const version = GET_VERSION_FOR.sqlite(rows.map((r) => r.column_name));
|
|
20
|
+
for (let v = version; v < MIGRATIONS_TABLE_VERSIONS.sqlite; v++) {
|
|
21
|
+
const upgradeFn = upgradeFunctions[v];
|
|
22
|
+
if (!upgradeFn) {
|
|
23
|
+
return yield* new EffectDrizzleError({
|
|
24
|
+
message: `No upgrade path from migration table version ${v} to ${v + 1}`,
|
|
25
|
+
cause: { version: v },
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
yield* upgradeFn(migrationsTable, session, localMigrations);
|
|
29
|
+
}
|
|
30
|
+
return { newDb: false };
|
|
31
|
+
});
|
|
32
|
+
const upgradeFunctions = {
|
|
33
|
+
0: upgradeFromV0,
|
|
34
|
+
};
|
|
35
|
+
function upgradeFromV0(migrationsTable, session, localMigrations) {
|
|
36
|
+
return Effect.gen(function* () {
|
|
37
|
+
const table = sql `${sql.identifier(migrationsTable)}`;
|
|
38
|
+
const dbRows = yield* session.all(sql `SELECT id, hash, created_at FROM ${table} ORDER BY id ASC`);
|
|
39
|
+
const statements = yield* Effect.try({
|
|
40
|
+
try: () => buildSQLiteMigrationBackfillStatements(migrationsTable, prepareSQLiteMigrationBackfill(dbRows, localMigrations)),
|
|
41
|
+
catch: migrationUpgradeError,
|
|
42
|
+
});
|
|
43
|
+
yield* session.transaction((tx) => Effect.gen(function* () {
|
|
44
|
+
for (const statement of statements) {
|
|
45
|
+
yield* tx.run(statement);
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=effect-sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-sqlite.js","sourceRoot":"","sources":["../../src/up-migrations/effect-sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { TablesRelationalConfig } from "drizzle-orm/_relations";
|
|
2
|
+
import type { MigrationMeta } from "drizzle-orm/migrator";
|
|
3
|
+
import type { AnyRelations } from "drizzle-orm/relations";
|
|
4
|
+
import { type SQL } from "drizzle-orm/sql/sql";
|
|
5
|
+
import type { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";
|
|
6
|
+
import type { SQLiteSession } from "drizzle-orm/sqlite-core/session";
|
|
7
|
+
import { type UpgradeResult } from "./utils";
|
|
8
|
+
/** @internal */
|
|
9
|
+
export type SQLiteMigrationTableRow = {
|
|
10
|
+
id: number | null;
|
|
11
|
+
hash: string;
|
|
12
|
+
created_at: number;
|
|
13
|
+
};
|
|
14
|
+
type AsyncSQLiteDatabaseWithSession = BaseSQLiteDatabase<"async", unknown, Record<string, unknown>> & {
|
|
15
|
+
session: {
|
|
16
|
+
all<T>(query: SQL): Promise<T[]>;
|
|
17
|
+
};
|
|
18
|
+
transaction<T>(transaction: (tx: {
|
|
19
|
+
run(query: SQL): Promise<unknown>;
|
|
20
|
+
}) => Promise<T>): Promise<T>;
|
|
21
|
+
};
|
|
22
|
+
type SQLiteMigrationBackfillEntry = {
|
|
23
|
+
name: string;
|
|
24
|
+
selector: {
|
|
25
|
+
column: "id";
|
|
26
|
+
value: number;
|
|
27
|
+
} | {
|
|
28
|
+
column: "created_at";
|
|
29
|
+
value: number;
|
|
30
|
+
} | {
|
|
31
|
+
column: "hash";
|
|
32
|
+
value: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/** @internal */
|
|
36
|
+
export declare function prepareSQLiteMigrationBackfill(dbRows: SQLiteMigrationTableRow[], localMigrations: MigrationMeta[]): SQLiteMigrationBackfillEntry[];
|
|
37
|
+
/** @internal */
|
|
38
|
+
export declare function buildSQLiteMigrationBackfillStatements(migrationsTable: string, backfillEntries: SQLiteMigrationBackfillEntry[]): SQL<unknown>[];
|
|
39
|
+
/**
|
|
40
|
+
* Detects the current version of the migrations table schema and upgrades it if needed.
|
|
41
|
+
*
|
|
42
|
+
* Version 0: Original schema (id, hash, created_at)
|
|
43
|
+
* Version 1: Extended schema (id, hash, created_at, name, applied_at)
|
|
44
|
+
*/
|
|
45
|
+
export declare function upgradeSyncIfNeeded(migrationsTable: string, session: SQLiteSession<"sync", unknown, Record<string, unknown>, AnyRelations, TablesRelationalConfig>, localMigrations: MigrationMeta[]): UpgradeResult;
|
|
46
|
+
/**
|
|
47
|
+
* Detects the current version of the migrations table schema and upgrades it if needed.
|
|
48
|
+
*
|
|
49
|
+
* Version 0: Original schema (id, hash, created_at)
|
|
50
|
+
* Version 1: Extended schema (id, hash, created_at, name, applied_at)
|
|
51
|
+
*/
|
|
52
|
+
export declare function upgradeAsyncIfNeeded(migrationsTable: string, db: AsyncSQLiteDatabaseWithSession, localMigrations: MigrationMeta[]): Promise<UpgradeResult>;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/up-migrations/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAA8C,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAExF,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7F,KAAK,8BAA8B,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG;IACpG,OAAO,EAAE;QACP,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;KACjC,CAAA;IACD,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;QAAE,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACnG,CAAA;AAED,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EACJ;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC/B;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACvC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CACtC,CAAA;AAYD,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,uBAAuB,EAAE,EACjC,eAAe,EAAE,aAAa,EAAE,GAC/B,4BAA4B,EAAE,CAmDhC;AAED,gBAAgB;AAChB,wBAAgB,sCAAsC,CACpD,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,4BAA4B,EAAE,kBAmBhD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,sBAAsB,CAAC,EACtG,eAAe,EAAE,aAAa,EAAE,GAC/B,aAAa,CAuBf;AAmCD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,8BAA8B,EAClC,eAAe,EAAE,aAAa,EAAE,GAC/B,OAAO,CAAC,aAAa,CAAC,CAyBxB"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { sql } from "drizzle-orm/sql/sql";
|
|
2
|
+
import { GET_VERSION_FOR, MIGRATIONS_TABLE_VERSIONS } from "./utils";
|
|
3
|
+
function unmatchedMigrationError(unmatched) {
|
|
4
|
+
return new Error(`While upgrading your database migrations table we found ${unmatched.length} (${unmatched
|
|
5
|
+
.map((it) => `[id: ${it.id}, created_at: ${it.created_at}]`)
|
|
6
|
+
.join(", ")}) migrations in the database that do not match any local migration. This means that some migrations were applied to the database but are missing from the local environment`);
|
|
7
|
+
}
|
|
8
|
+
/** @internal */
|
|
9
|
+
export function prepareSQLiteMigrationBackfill(dbRows, localMigrations) {
|
|
10
|
+
const sortedLocalMigrations = [...localMigrations].sort((a, b) => a.folderMillis !== b.folderMillis ? a.folderMillis - b.folderMillis : (a.name ?? "").localeCompare(b.name ?? ""));
|
|
11
|
+
const byMillis = new Map();
|
|
12
|
+
const byHash = new Map();
|
|
13
|
+
for (const migration of sortedLocalMigrations) {
|
|
14
|
+
if (!byMillis.has(migration.folderMillis)) {
|
|
15
|
+
byMillis.set(migration.folderMillis, []);
|
|
16
|
+
}
|
|
17
|
+
byMillis.get(migration.folderMillis).push(migration);
|
|
18
|
+
byHash.set(migration.hash, migration);
|
|
19
|
+
}
|
|
20
|
+
const toApply = [];
|
|
21
|
+
const unmatched = [];
|
|
22
|
+
for (const dbRow of dbRows) {
|
|
23
|
+
const stringified = String(dbRow.created_at);
|
|
24
|
+
const millis = Number(stringified.substring(0, stringified.length - 3) + "000");
|
|
25
|
+
const candidates = byMillis.get(millis);
|
|
26
|
+
const matchedByMillis = candidates?.length === 1 ? candidates[0] : undefined;
|
|
27
|
+
const matchedByCandidateHash = candidates && candidates.length > 1
|
|
28
|
+
? candidates.find((candidate) => candidate.hash && dbRow.hash && candidate.hash === dbRow.hash)
|
|
29
|
+
: undefined;
|
|
30
|
+
const matchedByHash = matchedByMillis || matchedByCandidateHash ? undefined : byHash.get(dbRow.hash);
|
|
31
|
+
const matched = matchedByMillis ?? matchedByCandidateHash ?? matchedByHash;
|
|
32
|
+
if (matched) {
|
|
33
|
+
toApply.push({
|
|
34
|
+
name: matched.name,
|
|
35
|
+
selector: dbRow.id !== null
|
|
36
|
+
? { column: "id", value: dbRow.id }
|
|
37
|
+
: matchedByMillis
|
|
38
|
+
? { column: "created_at", value: dbRow.created_at }
|
|
39
|
+
: { column: "hash", value: dbRow.hash },
|
|
40
|
+
});
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
unmatched.push(dbRow);
|
|
44
|
+
}
|
|
45
|
+
if (unmatched.length > 0) {
|
|
46
|
+
throw unmatchedMigrationError(unmatched);
|
|
47
|
+
}
|
|
48
|
+
return toApply;
|
|
49
|
+
}
|
|
50
|
+
/** @internal */
|
|
51
|
+
export function buildSQLiteMigrationBackfillStatements(migrationsTable, backfillEntries) {
|
|
52
|
+
const table = sql `${sql.identifier(migrationsTable)}`;
|
|
53
|
+
const statements = [
|
|
54
|
+
sql `ALTER TABLE ${table} ADD COLUMN ${sql.identifier("name")} text`,
|
|
55
|
+
sql `ALTER TABLE ${table} ADD COLUMN ${sql.identifier("applied_at")} TEXT`,
|
|
56
|
+
];
|
|
57
|
+
for (const backfillEntry of backfillEntries) {
|
|
58
|
+
const updateQuery = sql `UPDATE ${table} SET ${sql.identifier("name")} = ${backfillEntry.name}, ${sql.identifier("applied_at")} = NULL WHERE`;
|
|
59
|
+
updateQuery.append(sql ` ${sql.identifier(backfillEntry.selector.column)} = ${backfillEntry.selector.value}`);
|
|
60
|
+
statements.push(updateQuery);
|
|
61
|
+
}
|
|
62
|
+
return statements;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Detects the current version of the migrations table schema and upgrades it if needed.
|
|
66
|
+
*
|
|
67
|
+
* Version 0: Original schema (id, hash, created_at)
|
|
68
|
+
* Version 1: Extended schema (id, hash, created_at, name, applied_at)
|
|
69
|
+
*/
|
|
70
|
+
export function upgradeSyncIfNeeded(migrationsTable, session, localMigrations) {
|
|
71
|
+
const tableExists = session.all(sql `SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ${migrationsTable}`);
|
|
72
|
+
if (tableExists.length === 0) {
|
|
73
|
+
return { newDb: true };
|
|
74
|
+
}
|
|
75
|
+
// Table exists, check table shape
|
|
76
|
+
const rows = session.all(sql `SELECT name as column_name FROM pragma_table_info(${migrationsTable})`);
|
|
77
|
+
const version = GET_VERSION_FOR.sqlite(rows.map((r) => r.column_name));
|
|
78
|
+
for (let v = version; v < MIGRATIONS_TABLE_VERSIONS.sqlite; v++) {
|
|
79
|
+
const upgradeFn = upgradeSyncFunctions[v];
|
|
80
|
+
if (!upgradeFn) {
|
|
81
|
+
throw new Error(`No upgrade path from migration table version ${v} to ${v + 1}`);
|
|
82
|
+
}
|
|
83
|
+
upgradeFn(migrationsTable, session, localMigrations);
|
|
84
|
+
}
|
|
85
|
+
return { newDb: false };
|
|
86
|
+
}
|
|
87
|
+
const upgradeSyncFunctions = {
|
|
88
|
+
/**
|
|
89
|
+
* Upgrade from version 0 to version 1:
|
|
90
|
+
* 1. Read all existing DB migrations
|
|
91
|
+
* 2. Sort localMigrations ASC by millis and if the same - sort by name
|
|
92
|
+
* 3. Match each DB row to a local migration
|
|
93
|
+
* If multiple migrations share the same second, use hash matching as a tiebreaker
|
|
94
|
+
* Not implemented for now -> If hash matching fails, fall back to serial id ordering
|
|
95
|
+
* 5. Create extra column and backfill names for matched migrations
|
|
96
|
+
*/
|
|
97
|
+
0: (migrationsTable, session, localMigrations) => {
|
|
98
|
+
const table = sql `${sql.identifier(migrationsTable)}`;
|
|
99
|
+
const dbRows = session.all(sql `SELECT id, hash, created_at FROM ${table} ORDER BY id ASC`);
|
|
100
|
+
const statements = buildSQLiteMigrationBackfillStatements(migrationsTable, prepareSQLiteMigrationBackfill(dbRows, localMigrations));
|
|
101
|
+
session.transaction((tx) => {
|
|
102
|
+
for (const statement of statements) {
|
|
103
|
+
tx.run(statement);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Detects the current version of the migrations table schema and upgrades it if needed.
|
|
110
|
+
*
|
|
111
|
+
* Version 0: Original schema (id, hash, created_at)
|
|
112
|
+
* Version 1: Extended schema (id, hash, created_at, name, applied_at)
|
|
113
|
+
*/
|
|
114
|
+
export async function upgradeAsyncIfNeeded(migrationsTable, db, localMigrations) {
|
|
115
|
+
// Check if the table exists at all
|
|
116
|
+
const tableExists = await db.session.all(sql `SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ${migrationsTable}`);
|
|
117
|
+
if (tableExists.length === 0) {
|
|
118
|
+
return { newDb: true };
|
|
119
|
+
}
|
|
120
|
+
const rows = await db.session.all(sql `SELECT name as column_name FROM pragma_table_info(${migrationsTable})`);
|
|
121
|
+
const version = GET_VERSION_FOR.sqlite(rows.map((r) => r.column_name));
|
|
122
|
+
for (let v = version; v < MIGRATIONS_TABLE_VERSIONS.sqlite; v++) {
|
|
123
|
+
const upgradeFn = upgradeAsyncFunctions[v];
|
|
124
|
+
if (!upgradeFn) {
|
|
125
|
+
throw new Error(`No upgrade path from migration table version ${v} to ${v + 1}`);
|
|
126
|
+
}
|
|
127
|
+
await upgradeFn(migrationsTable, db, localMigrations);
|
|
128
|
+
}
|
|
129
|
+
return { newDb: false };
|
|
130
|
+
}
|
|
131
|
+
const upgradeAsyncFunctions = {
|
|
132
|
+
/**
|
|
133
|
+
* Upgrade from version 0 to version 1:
|
|
134
|
+
* 1. Read all existing DB migrations
|
|
135
|
+
* 2. Sort localMigrations ASC by millis and if the same - sort by name
|
|
136
|
+
* 3. Match each DB row to a local migration
|
|
137
|
+
* If multiple migrations share the same second, use hash matching as a tiebreaker
|
|
138
|
+
* Not implemented for now -> If hash matching fails, fall back to serial id ordering
|
|
139
|
+
* 5. Create extra column and backfill names for matched migrations
|
|
140
|
+
*/
|
|
141
|
+
0: async (migrationsTable, db, localMigrations) => {
|
|
142
|
+
const table = sql `${sql.identifier(migrationsTable)}`;
|
|
143
|
+
const dbRows = await db.session.all(sql `SELECT id, hash, created_at FROM ${table} ORDER BY id ASC`);
|
|
144
|
+
const statements = buildSQLiteMigrationBackfillStatements(migrationsTable, prepareSQLiteMigrationBackfill(dbRows, localMigrations));
|
|
145
|
+
await db.transaction(async (tx) => {
|
|
146
|
+
for (const statement of statements) {
|
|
147
|
+
await tx.run(statement);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/up-migrations/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface UpgradeResult {
|
|
2
|
+
newDb: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare const MIGRATIONS_TABLE_VERSIONS: {
|
|
5
|
+
readonly sqlite: 1;
|
|
6
|
+
readonly pg: 1;
|
|
7
|
+
readonly effect: 1;
|
|
8
|
+
readonly mysql: 1;
|
|
9
|
+
readonly mssql: 1;
|
|
10
|
+
readonly cockroach: 1;
|
|
11
|
+
readonly singlestore: 1;
|
|
12
|
+
};
|
|
13
|
+
export declare const GET_VERSION_FOR: {
|
|
14
|
+
readonly mysql: (columns: string[]) => number;
|
|
15
|
+
readonly pg: (columns: string[]) => number;
|
|
16
|
+
readonly effect: (columns: string[]) => number;
|
|
17
|
+
readonly mssql: (columns: string[]) => number;
|
|
18
|
+
readonly cockroach: (columns: string[]) => number;
|
|
19
|
+
readonly singlestore: (columns: string[]) => number;
|
|
20
|
+
readonly sqlite: (columns: string[]) => number;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/up-migrations/utils.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,yBAAyB;;;;;;;;CAQ5B,CAAA;AAEV,eAAO,MAAM,eAAe;8BACT,MAAM,EAAE,KAAG,MAAM;2BAIpB,MAAM,EAAE,KAAG,MAAM;+BAIb,MAAM,EAAE,KAAG,MAAM;8BAIlB,MAAM,EAAE,KAAG,MAAM;kCAIb,MAAM,EAAE,KAAG,MAAM;oCAIf,MAAM,EAAE,KAAG,MAAM;+BAItB,MAAM,EAAE,KAAG,MAAM;CAI3B,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const MIGRATIONS_TABLE_VERSIONS = {
|
|
2
|
+
sqlite: 1,
|
|
3
|
+
pg: 1,
|
|
4
|
+
effect: 1,
|
|
5
|
+
mysql: 1,
|
|
6
|
+
mssql: 1,
|
|
7
|
+
cockroach: 1,
|
|
8
|
+
singlestore: 1,
|
|
9
|
+
};
|
|
10
|
+
export const GET_VERSION_FOR = {
|
|
11
|
+
mysql: (columns) => {
|
|
12
|
+
if (columns.includes("name"))
|
|
13
|
+
return 1;
|
|
14
|
+
return 0;
|
|
15
|
+
},
|
|
16
|
+
pg: (columns) => {
|
|
17
|
+
if (columns.includes("name"))
|
|
18
|
+
return 1;
|
|
19
|
+
return 0;
|
|
20
|
+
},
|
|
21
|
+
effect: (columns) => {
|
|
22
|
+
if (columns.includes("name"))
|
|
23
|
+
return 1;
|
|
24
|
+
return 0;
|
|
25
|
+
},
|
|
26
|
+
mssql: (columns) => {
|
|
27
|
+
if (columns.includes("name"))
|
|
28
|
+
return 1;
|
|
29
|
+
return 0;
|
|
30
|
+
},
|
|
31
|
+
cockroach: (columns) => {
|
|
32
|
+
if (columns.includes("name"))
|
|
33
|
+
return 1;
|
|
34
|
+
return 0;
|
|
35
|
+
},
|
|
36
|
+
singlestore: (columns) => {
|
|
37
|
+
if (columns.includes("name"))
|
|
38
|
+
return 1;
|
|
39
|
+
return 0;
|
|
40
|
+
},
|
|
41
|
+
sqlite: (columns) => {
|
|
42
|
+
if (columns.includes("name"))
|
|
43
|
+
return 1;
|
|
44
|
+
return 0;
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/up-migrations/utils.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE,CAAC;IACT,EAAE,EAAE,CAAC;IACL,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;CACN,CAAA;AAEV,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,OAAiB,EAAU,EAAE;QACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,EAAE,EAAE,CAAC,OAAiB,EAAU,EAAE;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,EAAE,CAAC,OAAiB,EAAU,EAAE;QACpC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,KAAK,EAAE,CAAC,OAAiB,EAAU,EAAE;QACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,SAAS,EAAE,CAAC,OAAiB,EAAU,EAAE;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,WAAW,EAAE,CAAC,OAAiB,EAAU,EAAE;QACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,EAAE,CAAC,OAAiB,EAAU,EAAE;QACpC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC;CACO,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/package.json",
|
|
3
|
+
"version": "19.0.5",
|
|
4
|
+
"name": "@zyraxon-ai/effect-drizzle-sqlite",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"homepage": "https://zyraxonai.lovable.app",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/onelpawarai-X/ZYRAXON-AI.git",
|
|
11
|
+
"directory": "packages/effect-drizzle-sqlite"
|
|
12
|
+
},
|
|
13
|
+
"author": "OMG / Lx Sayidi <sayidilx@gmail.com>",
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": ["dist"],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc --project tsconfig.build.json",
|
|
25
|
+
"prepublishOnly": "npm run build"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"drizzle-orm": "1.0.0-rc.2",
|
|
29
|
+
"effect": "4.0.0-beta.83"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@tsconfig/bun": "1.0.9",
|
|
33
|
+
"@types/bun": "1.3.13",
|
|
34
|
+
"@typescript/native-preview": "7.0.0-dev.20251207.1",
|
|
35
|
+
"typescript": "5.8.2"
|
|
36
|
+
}
|
|
37
|
+
}
|