rado 0.1.16 → 0.1.18

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.
@@ -80,22 +80,22 @@ var Formatter = class {
80
80
  }
81
81
  }
82
82
  formatSelect(query, ctx) {
83
- return raw("select").add(this.formatSelection(query.selection, ctx)).addLine("from").add(this.formatTarget(query.from, ctx)).add(this.formatWhere(query.where, ctx)).add(this.formatGroupBy(query.groupBy, ctx)).add(this.formatHaving(query.having, ctx)).add(this.formatOrderBy(query.orderBy, ctx)).add(this.formatLimit(query, ctx));
83
+ return raw("SELECT").add(this.formatSelection(query.selection, ctx)).addLine("FROM").add(this.formatTarget(query.from, ctx)).add(this.formatWhere(query.where, ctx)).add(this.formatGroupBy(query.groupBy, ctx)).add(this.formatHaving(query.having, ctx)).add(this.formatOrderBy(query.orderBy, ctx)).add(this.formatLimit(query, ctx));
84
84
  }
85
85
  formatInsert(query, ctx) {
86
86
  const columns = Object.values(query.into.columns);
87
- return raw("insert into").addIdentifier(query.into.name).addIf(query.into.alias, () => raw("as").addIdentifier(query.into.alias)).parenthesis(
87
+ return raw("INSERT INTO").addIdentifier(query.into.name).addIf(query.into.alias, () => raw("AS").addIdentifier(query.into.alias)).parenthesis(
88
88
  separated(columns.map((column) => this.formatString(column.name)))
89
- ).add("values").addSeparated(
89
+ ).add("VALUES").addSeparated(
90
90
  query.data.map((row) => this.formatInsertRow(query.into.columns, row))
91
91
  ).addIf(
92
92
  query.selection,
93
- () => raw("returning").add(this.formatSelection(query.selection, ctx))
93
+ () => raw("RETURNING").add(this.formatSelection(query.selection, ctx))
94
94
  );
95
95
  }
96
96
  formatUpdate(query, ctx) {
97
97
  const data = query.set || {};
98
- return raw("update").addIdentifier(query.table.name).add("set").addSeparated(
98
+ return raw("UPDATE").addIdentifier(query.table.name).add("SET").addSeparated(
99
99
  Object.keys(data).map((key) => {
100
100
  const column = query.table.columns[key];
101
101
  const exprData = data[key];
@@ -109,10 +109,10 @@ var Formatter = class {
109
109
  ).add(this.formatWhere(query.where, ctx)).add(this.formatLimit(query, ctx));
110
110
  }
111
111
  formatDelete(query, ctx) {
112
- return raw("delete from").addIdentifier(query.table.name).add(this.formatWhere(query.where, ctx)).add(this.formatLimit(query, ctx));
112
+ return raw("DELETE FROM").addIdentifier(query.table.name).add(this.formatWhere(query.where, ctx)).add(this.formatLimit(query, ctx));
113
113
  }
114
114
  formatCreateTable(query, ctx) {
115
- return raw("create table").addIf(query.ifNotExists, "if not exists").addCall(
115
+ return raw("CREATE TABLE").addIf(query.ifNotExists, "IF NOT EXISTS").addCall(
116
116
  query.table.name,
117
117
  ...Object.values(query.table.columns).map((column) => {
118
118
  return this.formatColumn(column);
@@ -120,7 +120,7 @@ var Formatter = class {
120
120
  );
121
121
  }
122
122
  formatCreateIndex(query, ctx = {}) {
123
- return raw("create").addIf(query.index.unique, "unique").add("index").addIf(query.ifNotExists, "if not exists").addIdentifier(query.index.name).add("on").addIdentifier(query.table.name).parenthesis(
123
+ return raw("CREATE").addIf(query.index.unique, "UNIQUE").add("INDEX").addIf(query.ifNotExists, "IF NOT EXISTS").addIdentifier(query.index.name).add("ON").addIdentifier(query.table.name).parenthesis(
124
124
  separated(
125
125
  query.index.on.map(
126
126
  (expr) => this.formatExprValue(expr, {
@@ -133,14 +133,14 @@ var Formatter = class {
133
133
  ).add(this.formatWhere(query.where, ctx));
134
134
  }
135
135
  formatDropIndex(query, ctx) {
136
- return raw("drop index").addIf(query.ifExists, "if exists").addIdentifier(query.name);
136
+ return raw("DROP INDEX").addIf(query.ifExists, "IF EXISTS").addIdentifier(query.name);
137
137
  }
138
138
  formatAlterTable(query, ctx) {
139
- let stmt = raw("alter table").addIdentifier(query.table.name);
139
+ let stmt = raw("ALTER TABLE").addIdentifier(query.table.name);
140
140
  if (query.addColumn) {
141
- stmt = stmt.add("add column").add(this.formatColumn(query.addColumn));
141
+ stmt = stmt.add("ADD COLUMN").add(this.formatColumn(query.addColumn));
142
142
  } else if (query.dropColumn) {
143
- stmt = stmt.add("drop column").addIdentifier(query.dropColumn);
143
+ stmt = stmt.add("DROP COLUMN").addIdentifier(query.dropColumn);
144
144
  } else if (query.alterColumn) {
145
145
  throw new Error(`Not available in this formatter: alter column`);
146
146
  }
@@ -149,11 +149,11 @@ var Formatter = class {
149
149
  formatTransaction({ op, id }, ctx) {
150
150
  switch (op) {
151
151
  case Query.TransactionOperation.Begin:
152
- return raw("savepoint").addIdentifier(id);
152
+ return raw("SAVEPOINT").addIdentifier(id);
153
153
  case Query.TransactionOperation.Commit:
154
- return raw("release").addIdentifier(id);
154
+ return raw("RELEASE").addIdentifier(id);
155
155
  case Query.TransactionOperation.Rollback:
156
- return raw("rollback to").addIdentifier(id);
156
+ return raw("ROLLBACK TO").addIdentifier(id);
157
157
  }
158
158
  }
159
159
  formatBatch(queries, ctx) {
@@ -166,9 +166,9 @@ var Formatter = class {
166
166
  return Statement.tag(strings, ...params);
167
167
  }
168
168
  formatColumn(column) {
169
- return identifier(column.name).add(this.formatType(column.type)).addIf(column.unique, "unique").addIf(column.autoIncrement, "autoincrement").addIf(column.primaryKey, "primary key").addIf(!column.nullable, "not null").addIf(
169
+ return identifier(column.name).add(this.formatType(column.type)).addIf(column.unique, "UNIQUE").addIf(column.autoIncrement, "AUTOINCREMENT").addIf(column.primaryKey, "PRIMARY KEY").addIf(!column.nullable, "NOT NULL").addIf(
170
170
  column.defaultValue !== void 0,
171
- raw("default").add(this.formatInlineValue(column.defaultValue))
171
+ raw("DEFAULT").add(this.formatInlineValue(column.defaultValue))
172
172
  ).addIf(column.references, () => {
173
173
  return this.formatContraintReference(column.references);
174
174
  });
@@ -177,20 +177,20 @@ var Formatter = class {
177
177
  if (reference.type !== ExprType.Field || reference.expr.type !== ExprType.Row)
178
178
  throw new Error("not supported");
179
179
  const from = reference.expr.target;
180
- return raw("references").addIdentifier(Target.source(from).name).parenthesis(identifier(reference.field));
180
+ return raw("REFERENCES").addIdentifier(Target.source(from).name).parenthesis(identifier(reference.field));
181
181
  }
182
182
  formatType(type) {
183
183
  switch (type) {
184
184
  case ColumnType.String:
185
- return raw("text");
185
+ return raw("TEXT");
186
186
  case ColumnType.Json:
187
- return raw("json");
187
+ return raw("JSON");
188
188
  case ColumnType.Number:
189
- return raw("numeric");
189
+ return raw("NUMERIC");
190
190
  case ColumnType.Boolean:
191
- return raw("boolean");
191
+ return raw("BOOLEAN");
192
192
  case ColumnType.Integer:
193
- return raw("integer");
193
+ return raw("INTEGER");
194
194
  }
195
195
  }
196
196
  formatInsertRow(columns, row) {
@@ -209,7 +209,7 @@ var Formatter = class {
209
209
  if (isNull) {
210
210
  if (!isOptional)
211
211
  throw new TypeError(`Expected value for column ${column.name}`);
212
- return raw("null");
212
+ return raw("NULL");
213
213
  }
214
214
  switch (column.type) {
215
215
  case ColumnType.String:
@@ -236,11 +236,11 @@ var Formatter = class {
236
236
  case TargetType.Table:
237
237
  return identifier(target.table.name).addIf(
238
238
  target.table.alias,
239
- () => raw("as").addIdentifier(target.table.alias)
239
+ () => raw("AS").addIdentifier(target.table.alias)
240
240
  );
241
241
  case TargetType.Join:
242
242
  const { left, right, joinType } = target;
243
- return this.formatTarget(left, ctx).addLine(joins[joinType]).add("join").add(this.formatTarget(right, ctx)).add("on").add(this.formatExprValue(target.on, ctx));
243
+ return this.formatTarget(left, ctx).addLine(joins[joinType]).add("JOIN").add(this.formatTarget(right, ctx)).add("ON").add(this.formatExprValue(target.on, ctx));
244
244
  default:
245
245
  throw new Error(`Cannot format target of type ${target.type}`);
246
246
  }
@@ -248,25 +248,25 @@ var Formatter = class {
248
248
  formatWhere(expr, ctx) {
249
249
  if (!expr)
250
250
  return;
251
- return newline().raw("where").add(this.formatExprValue(expr, ctx));
251
+ return newline().raw("WHERE").add(this.formatExprValue(expr, ctx));
252
252
  }
253
253
  formatHaving(expr, ctx) {
254
254
  if (!expr)
255
255
  return;
256
- return newline().raw("having").add(this.formatExprValue(expr, ctx));
256
+ return newline().raw("HAVING").add(this.formatExprValue(expr, ctx));
257
257
  }
258
258
  formatGroupBy(groupBy, ctx) {
259
259
  if (!groupBy)
260
260
  return;
261
- return newline().raw("group by").addSeparated(groupBy.map((expr) => this.formatExprValue(expr, ctx)));
261
+ return newline().raw("GROUP BY").addSeparated(groupBy.map((expr) => this.formatExprValue(expr, ctx)));
262
262
  }
263
263
  formatOrderBy(orderBy, ctx) {
264
264
  if (!orderBy)
265
265
  return;
266
- return newline().raw("order by").addSeparated(
266
+ return newline().raw("ORDER BY").addSeparated(
267
267
  orderBy.map(
268
268
  ({ expr, order }) => this.formatExprValue(expr, ctx).add(
269
- order === OrderDirection.Asc ? "asc" : "desc"
269
+ order === OrderDirection.Asc ? "ASC" : "DESC"
270
270
  )
271
271
  )
272
272
  );
@@ -274,7 +274,7 @@ var Formatter = class {
274
274
  formatLimit({ limit, offset, singleResult }, ctx) {
275
275
  if (!limit && !offset && !singleResult)
276
276
  return;
277
- return newline().raw("limit").addValue(singleResult ? 1 : limit).addIf(offset && offset > 0, raw("offset").addValue(offset));
277
+ return newline().raw("LIMIT").addValue(singleResult ? 1 : limit).addIf(offset && offset > 0, raw("OFFSET").addValue(offset));
278
278
  }
279
279
  formatSelection(selection, ctx) {
280
280
  const { formatSubject } = ctx;
@@ -285,7 +285,7 @@ var Formatter = class {
285
285
  });
286
286
  return (formatSubject ? formatSubject(subject) : subject).addIf(
287
287
  ctx.nameResult,
288
- raw("as").addIdentifier(ctx.nameResult)
288
+ raw("AS").addIdentifier(ctx.nameResult)
289
289
  );
290
290
  }
291
291
  formatExprValue(expr, ctx) {
@@ -300,7 +300,7 @@ var Formatter = class {
300
300
  }
301
301
  }
302
302
  formatUnwrapArray(stmt) {
303
- return parenthesis(raw("select value from").addCall("json_each", stmt));
303
+ return parenthesis(raw("SELECT value FROM").addCall("json_each", stmt));
304
304
  }
305
305
  retrieveField(expr, field) {
306
306
  switch (expr.type) {
@@ -324,14 +324,15 @@ var Formatter = class {
324
324
  const column = expr.target.table.columns[field];
325
325
  switch (column?.type) {
326
326
  case ColumnType.Json:
327
- return call("json", selection);
327
+ if (ctx.formatAsJson)
328
+ return call("json", selection);
328
329
  default:
329
330
  return selection;
330
331
  }
331
332
  }
332
333
  default:
333
334
  return this.formatAccess(
334
- this.formatExpr(expr, { ...ctx, formatAsJson: true }),
335
+ this.formatExpr(expr, ctx),
335
336
  field,
336
337
  ctx.formatAsJson
337
338
  );
@@ -343,9 +344,9 @@ var Formatter = class {
343
344
  formatInlineValue(rawValue) {
344
345
  switch (true) {
345
346
  case (rawValue === null || rawValue === void 0):
346
- return raw("null");
347
+ return raw("NULL");
347
348
  case typeof rawValue === "boolean":
348
- return rawValue ? raw("true") : raw("false");
349
+ return rawValue ? raw("TRUE") : raw("FALSE");
349
350
  case (typeof rawValue === "string" || typeof rawValue === "number"):
350
351
  return this.formatString(rawValue);
351
352
  default:
@@ -356,7 +357,7 @@ var Formatter = class {
356
357
  const { formatAsJson, forceInline } = ctx;
357
358
  switch (true) {
358
359
  case (rawValue === null || rawValue === void 0):
359
- return raw("null");
360
+ return raw("NULL");
360
361
  case (!formatAsJson && typeof rawValue === "boolean"):
361
362
  return rawValue ? raw("1") : raw("0");
362
363
  case Array.isArray(rawValue):
@@ -384,9 +385,9 @@ var Formatter = class {
384
385
  case ExprType.UnOp:
385
386
  switch (expr.op) {
386
387
  case UnOp.IsNull:
387
- return this.formatExprValue(expr.expr, ctx).add("is null");
388
+ return this.formatExprValue(expr.expr, ctx).add("IS NULL");
388
389
  case UnOp.Not:
389
- return raw("not").addParenthesis(
390
+ return raw("NOT").addParenthesis(
390
391
  this.formatExprValue(expr.expr, ctx)
391
392
  );
392
393
  }
@@ -426,7 +427,7 @@ var Formatter = class {
426
427
  if (expr.query.singleResult)
427
428
  return call("json", parenthesis(subQuery));
428
429
  return parenthesis(
429
- raw("select json_group_array(json(result))").newline().raw("from ").parenthesis(subQuery)
430
+ raw("SELECT json_group_array(json(result))").newline().raw("FROM").addParenthesis(subQuery)
430
431
  );
431
432
  case ExprType.Row:
432
433
  switch (expr.target.type) {
@@ -468,11 +469,11 @@ var Formatter = class {
468
469
  switch (target.type) {
469
470
  case TargetType.Each:
470
471
  return parenthesis(
471
- raw("select json_group_array(json(result)) from").addParenthesis(
472
- raw("select value as result").add("from").addCall(
472
+ raw("SELECT json_group_array(json(result)) FROM").addParenthesis(
473
+ raw("SELECT value AS result").add("FROM").addCall(
473
474
  "json_each",
474
475
  this.formatExpr(target.expr, { ...ctx, formatAsJson: true })
475
- ).add("as").addIdentifier(target.alias).add("where").add(this.formatExprValue(condition, ctx))
476
+ ).add("AS").addIdentifier(target.alias).add("WHERE").add(this.formatExprValue(condition, ctx))
476
477
  )
477
478
  );
478
479
  default:
@@ -484,11 +485,11 @@ var Formatter = class {
484
485
  switch (target.type) {
485
486
  case TargetType.Each:
486
487
  return parenthesis(
487
- raw("select json_group_array(json(result)) from").addParenthesis(
488
- raw("select").add(this.formatExpr(result, { ...ctx, formatAsJson: true })).add("as").addIdentifier("result").add("from").addCall(
488
+ raw("SELECT json_group_array(json(result)) FROM").addParenthesis(
489
+ raw("SELECT").add(this.formatExpr(result, { ...ctx, formatAsJson: true })).add("AS").addIdentifier("result").add("FROM").addCall(
489
490
  "json_each",
490
491
  this.formatExpr(target.expr, { ...ctx, formatAsJson: true })
491
- ).add("as").addIdentifier(target.alias)
492
+ ).add("AS").addIdentifier(target.alias)
492
493
  )
493
494
  );
494
495
  default:
@@ -49,7 +49,7 @@ var SqliteFormatter = class extends Formatter {
49
49
  throw new Error("not implemented");
50
50
  if (from.target.type !== TargetType.Table)
51
51
  throw new Error("not implemented");
52
- return identifier(from.target.table.alias || from.target.table.name).raw(" match ").concat(this.formatExprValue(query, ctx));
52
+ return identifier(from.target.table.alias || from.target.table.name).raw(" MATCH ").concat(this.formatExprValue(query, ctx));
53
53
  }
54
54
  default:
55
55
  return super.formatExpr(expr, ctx);
@@ -26,9 +26,9 @@ var SqliteSchema;
26
26
  function columnInstruction(column) {
27
27
  return [
28
28
  column.name,
29
- identifier(column.name).add(column.type.toLowerCase()).addIf(column.pk === 1, "primary key").addIf(column.notnull === 1, "not null").addIf(
29
+ identifier(column.name).add(column.type).addIf(column.pk === 1, "PRIMARY KEY").addIf(column.notnull === 1, "NOT NULL").addIf(
30
30
  column.dflt_value !== null,
31
- raw("default").add(column.dflt_value)
31
+ raw("DEFAULT").add(column.dflt_value)
32
32
  ).compile(formatter)[0]
33
33
  ];
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rado",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {