@forinda/kickjs-drizzle 1.6.0 → 1.7.1-alpha.0

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.
@@ -1,4 +1,4 @@
1
- import { type AppAdapter, type Container } from '@forinda/kickjs-core';
1
+ import { type AppAdapter, type AdapterContext } from '@forinda/kickjs-core';
2
2
  import { type DrizzleAdapterOptions } from './types';
3
3
  /**
4
4
  * Drizzle ORM adapter — registers a Drizzle database instance in the DI
@@ -44,7 +44,7 @@ export declare class DrizzleAdapter<TDb = unknown> implements AppAdapter {
44
44
  private onShutdown?;
45
45
  constructor(options: DrizzleAdapterOptions<TDb>);
46
46
  /** Register the Drizzle db instance in the DI container */
47
- beforeStart(_app: unknown, container: Container): void;
47
+ beforeStart({ container }: AdapterContext): void;
48
48
  /** Close the underlying connection on shutdown */
49
49
  shutdown(): Promise<void>;
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle.adapter.d.ts","sourceRoot":"","sources":["../src/drizzle.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,SAAS,EAAS,MAAM,sBAAsB,CAAA;AACrF,OAAO,EAAc,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAc,CAAC,GAAG,GAAG,OAAO,CAAE,YAAW,UAAU;IAKlD,OAAO,CAAC,OAAO;IAJ3B,IAAI,SAAmB;IACvB,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,UAAU,CAAC,CAA4B;gBAE3B,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC;IAKvD,2DAA2D;IAC3D,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAUtD,kDAAkD;IAC5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
1
+ {"version":3,"file":"drizzle.adapter.d.ts","sourceRoot":"","sources":["../src/drizzle.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAC1F,OAAO,EAAc,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAc,CAAC,GAAG,GAAG,OAAO,CAAE,YAAW,UAAU;IAKlD,OAAO,CAAC,OAAO;IAJ3B,IAAI,SAAmB;IACvB,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,UAAU,CAAC,CAA4B;gBAE3B,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC;IAKvD,2DAA2D;IAC3D,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,cAAc,GAAG,IAAI;IAUhD,kDAAkD;IAC5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
package/dist/index.js CHANGED
@@ -6,8 +6,8 @@ var u = /* @__PURE__ */ Symbol("DrizzleDB"), h = l.for("DrizzleAdapter"), d = cl
6
6
  constructor(e) {
7
7
  this.options = e, this.db = e.db, this.onShutdown = e.onShutdown;
8
8
  }
9
- beforeStart(e, t) {
10
- this.options.logging && h.info("Query logging enabled"), t.registerFactory(u, () => this.db, c.SINGLETON), h.info("Drizzle database registered in DI container");
9
+ beforeStart({ container: e }) {
10
+ this.options.logging && h.info("Query logging enabled"), e.registerFactory(u, () => this.db, c.SINGLETON), h.info("Drizzle database registered in DI container");
11
11
  }
12
12
  async shutdown() {
13
13
  this.onShutdown && (await this.onShutdown(), h.info("Drizzle connection closed"));
@@ -17,7 +17,7 @@ function b(e) {
17
17
  return {
18
18
  filterable: Object.keys(e.columns),
19
19
  sortable: e.sortable ? Object.keys(e.sortable) : [],
20
- searchable: e.searchColumns ? e.searchColumns.map((t) => t.name ?? "").filter(Boolean) : []
20
+ searchable: e.searchColumns ? e.searchColumns.map((s) => s.name ?? "").filter(Boolean) : []
21
21
  };
22
22
  }
23
23
  var m = class {
@@ -25,135 +25,135 @@ var m = class {
25
25
  constructor(e) {
26
26
  this.ops = e;
27
27
  }
28
- build(e, t = {}) {
29
- const s = {
28
+ build(e, s = {}) {
29
+ const t = {
30
30
  orderBy: [],
31
31
  limit: e.pagination.limit,
32
32
  offset: e.pagination.offset
33
33
  }, r = [];
34
34
  for (const o of e.filters) {
35
- const i = this.buildFilter(t.table, o);
35
+ const i = this.buildFilter(s.table, o);
36
36
  i && r.push(i);
37
37
  }
38
- if (e.search && t.searchColumns && t.searchColumns.length > 0) {
39
- const o = t.searchColumns.filter((i) => t.table[i]).map((i) => this.ops.ilike(t.table[i], `%${e.search}%`));
38
+ if (e.search && s.searchColumns && s.searchColumns.length > 0) {
39
+ const o = s.searchColumns.filter((i) => s.table[i]).map((i) => this.ops.ilike(s.table[i], `%${e.search}%`));
40
40
  o.length > 0 && r.push(this.ops.or(...o));
41
41
  }
42
- return r.length === 1 ? s.where = r[0] : r.length > 1 && (s.where = this.ops.and(...r)), s.orderBy = this.buildSort(t.table, e.sort), s;
42
+ return r.length === 1 ? t.where = r[0] : r.length > 1 && (t.where = this.ops.and(...r)), t.orderBy = this.buildSort(s.table, e.sort), t;
43
43
  }
44
- buildFromColumns(e, t) {
45
- const s = {
44
+ buildFromColumns(e, s) {
45
+ const t = {
46
46
  orderBy: [],
47
47
  limit: e.pagination.limit,
48
48
  offset: e.pagination.offset
49
49
  }, r = [];
50
- t.baseCondition && r.push(t.baseCondition);
50
+ s.baseCondition && r.push(s.baseCondition);
51
51
  for (const i of e.filters) {
52
- const n = t.columns[i.field];
52
+ const n = s.columns[i.field];
53
53
  if (!n) continue;
54
54
  const a = this.buildColumnFilter(n, i);
55
55
  a && r.push(a);
56
56
  }
57
- if (e.search && t.searchColumns && t.searchColumns.length > 0) {
58
- const i = t.searchColumns.map((n) => this.ops.ilike(n, `%${e.search}%`));
57
+ if (e.search && s.searchColumns && s.searchColumns.length > 0) {
58
+ const i = s.searchColumns.map((n) => this.ops.ilike(n, `%${e.search}%`));
59
59
  i.length > 0 && r.push(this.ops.or(...i));
60
60
  }
61
- r.length === 1 ? s.where = r[0] : r.length > 1 && (s.where = this.ops.and(...r));
62
- const o = t.sortable ?? t.columns;
63
- return s.orderBy = e.sort.filter((i) => o[i.field]).map((i) => i.direction === "desc" ? this.ops.desc(o[i.field]) : this.ops.asc(o[i.field])), s;
61
+ r.length === 1 ? t.where = r[0] : r.length > 1 && (t.where = this.ops.and(...r));
62
+ const o = s.sortable ?? s.columns;
63
+ return t.orderBy = e.sort.filter((i) => o[i.field]).map((i) => i.direction === "desc" ? this.ops.desc(o[i.field]) : this.ops.asc(o[i.field])), t;
64
64
  }
65
- buildFilter(e, t) {
66
- const s = e[t.field];
67
- if (!s) return null;
68
- const r = this.coerce(t.value);
69
- switch (t.operator) {
65
+ buildFilter(e, s) {
66
+ const t = e[s.field];
67
+ if (!t) return null;
68
+ const r = this.coerce(s.value);
69
+ switch (s.operator) {
70
70
  case "eq":
71
- return this.ops.eq(s, r);
71
+ return this.ops.eq(t, r);
72
72
  case "neq":
73
- return this.ops.ne(s, r);
73
+ return this.ops.ne(t, r);
74
74
  case "gt":
75
- return this.ops.gt(s, r);
75
+ return this.ops.gt(t, r);
76
76
  case "gte":
77
- return this.ops.gte(s, r);
77
+ return this.ops.gte(t, r);
78
78
  case "lt":
79
- return this.ops.lt(s, r);
79
+ return this.ops.lt(t, r);
80
80
  case "lte":
81
- return this.ops.lte(s, r);
81
+ return this.ops.lte(t, r);
82
82
  case "contains":
83
- return this.ops.ilike(s, `%${t.value}%`);
83
+ return this.ops.ilike(t, `%${s.value}%`);
84
84
  case "starts":
85
- return this.ops.ilike(s, `${t.value}%`);
85
+ return this.ops.ilike(t, `${s.value}%`);
86
86
  case "ends":
87
- return this.ops.ilike(s, `%${t.value}`);
87
+ return this.ops.ilike(t, `%${s.value}`);
88
88
  case "in": {
89
- const o = t.value.split(",").map((i) => this.coerce(i.trim()));
90
- return this.ops.inArray(s, o);
89
+ const o = s.value.split(",").map((i) => this.coerce(i.trim()));
90
+ return this.ops.inArray(t, o);
91
91
  }
92
92
  case "between": {
93
- const [o, i] = t.value.split(",").map((n) => this.coerce(n.trim()));
94
- return this.ops.and(this.ops.gte(s, o), this.ops.lte(s, i));
93
+ const [o, i] = s.value.split(",").map((n) => this.coerce(n.trim()));
94
+ return this.ops.and(this.ops.gte(t, o), this.ops.lte(t, i));
95
95
  }
96
96
  default:
97
- return this.ops.eq(s, r);
97
+ return this.ops.eq(t, r);
98
98
  }
99
99
  }
100
- buildColumnFilter(e, t) {
101
- const s = this.coerceByDataType(t.value, e.dataType);
102
- switch (t.operator) {
100
+ buildColumnFilter(e, s) {
101
+ const t = this.coerceByDataType(s.value, e.dataType);
102
+ switch (s.operator) {
103
103
  case "eq":
104
- return this.ops.eq(e, s);
104
+ return this.ops.eq(e, t);
105
105
  case "neq":
106
- return this.ops.ne(e, s);
106
+ return this.ops.ne(e, t);
107
107
  case "gt":
108
- return this.ops.gt(e, s);
108
+ return this.ops.gt(e, t);
109
109
  case "gte":
110
- return this.ops.gte(e, s);
110
+ return this.ops.gte(e, t);
111
111
  case "lt":
112
- return this.ops.lt(e, s);
112
+ return this.ops.lt(e, t);
113
113
  case "lte":
114
- return this.ops.lte(e, s);
114
+ return this.ops.lte(e, t);
115
115
  case "contains":
116
- return this.ops.ilike(e, `%${t.value}%`);
116
+ return this.ops.ilike(e, `%${s.value}%`);
117
117
  case "starts":
118
- return this.ops.ilike(e, `${t.value}%`);
118
+ return this.ops.ilike(e, `${s.value}%`);
119
119
  case "ends":
120
- return this.ops.ilike(e, `%${t.value}`);
120
+ return this.ops.ilike(e, `%${s.value}`);
121
121
  case "in": {
122
- const r = t.value.split(",").map((o) => this.coerceByDataType(o.trim(), e.dataType));
122
+ const r = s.value.split(",").map((o) => this.coerceByDataType(o.trim(), e.dataType));
123
123
  return this.ops.inArray(e, r);
124
124
  }
125
125
  case "between": {
126
- const [r, o] = t.value.split(",").map((a) => a.trim()), i = this.coerceByDataType(r, e.dataType), n = this.coerceByDataType(o, e.dataType);
126
+ const [r, o] = s.value.split(",").map((a) => a.trim()), i = this.coerceByDataType(r, e.dataType), n = this.coerceByDataType(o, e.dataType);
127
127
  return this.ops.between ? this.ops.between(e, i, n) : this.ops.and(this.ops.gte(e, i), this.ops.lte(e, n));
128
128
  }
129
129
  default:
130
- return this.ops.eq(e, s);
130
+ return this.ops.eq(e, t);
131
131
  }
132
132
  }
133
- buildSort(e, t) {
134
- return t.filter((s) => e[s.field]).map((s) => s.direction === "desc" ? this.ops.desc(e[s.field]) : this.ops.asc(e[s.field]));
133
+ buildSort(e, s) {
134
+ return s.filter((t) => e[t.field]).map((t) => t.direction === "desc" ? this.ops.desc(e[t.field]) : this.ops.asc(e[t.field]));
135
135
  }
136
136
  coerce(e) {
137
137
  if (e === "true") return !0;
138
138
  if (e === "false") return !1;
139
- const t = Number(e);
140
- return !Number.isNaN(t) && e.trim() !== "" ? t : e;
139
+ const s = Number(e);
140
+ return !Number.isNaN(s) && e.trim() !== "" ? s : e;
141
141
  }
142
- coerceByDataType(e, t) {
143
- if (!t) return this.coerce(e);
144
- switch (t) {
142
+ coerceByDataType(e, s) {
143
+ if (!s) return this.coerce(e);
144
+ switch (s) {
145
145
  case "boolean":
146
146
  return e === "true" || e === "1";
147
147
  case "number":
148
148
  case "bigint": {
149
- const s = Number(e);
150
- return Number.isNaN(s) ? e : s;
149
+ const t = Number(e);
150
+ return Number.isNaN(t) ? e : t;
151
151
  }
152
152
  case "date":
153
153
  case "localDate":
154
154
  case "localDateTime": {
155
- const s = new Date(e);
156
- return Number.isNaN(s.getTime()) ? e : s;
155
+ const t = new Date(e);
156
+ return Number.isNaN(t.getTime()) ? e : t;
157
157
  }
158
158
  default:
159
159
  return e;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forinda/kickjs-drizzle",
3
- "version": "1.6.0",
3
+ "version": "1.7.1-alpha.0",
4
4
  "description": "Drizzle ORM adapter with DI integration, transaction support, and query building for KickJS",
5
5
  "keywords": [
6
6
  "kickjs",
@@ -54,8 +54,8 @@
54
54
  ],
55
55
  "dependencies": {
56
56
  "reflect-metadata": "^0.2.2",
57
- "@forinda/kickjs-core": "1.6.0",
58
- "@forinda/kickjs-http": "1.6.0"
57
+ "@forinda/kickjs-core": "1.7.1-alpha.0",
58
+ "@forinda/kickjs-http": "1.7.1-alpha.0"
59
59
  },
60
60
  "peerDependencies": {
61
61
  "drizzle-orm": ">=0.30.0"