rado 0.1.27 → 0.1.29

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.
@@ -61,6 +61,7 @@ export declare namespace Cursor {
61
61
  orderBy(...orderBy: Array<Expr<any> | OrderBy>): SelectMultiple<T>;
62
62
  groupBy(...groupBy: Array<Expr<any>>): SelectMultiple<T>;
63
63
  first(): SelectSingle<T | undefined>;
64
+ sure(): SelectSingle<T>;
64
65
  where(...where: Array<EV<boolean>>): SelectMultiple<T>;
65
66
  toExpr(): Expr<T>;
66
67
  }
@@ -153,6 +153,13 @@ var Cursor = class {
153
153
  first() {
154
154
  return new SelectSingle({ ...this.query(), singleResult: true });
155
155
  }
156
+ sure() {
157
+ return new SelectSingle({
158
+ ...this.query(),
159
+ singleResult: true,
160
+ validate: true
161
+ });
162
+ }
156
163
  where(...where) {
157
164
  return new SelectMultiple(super.where(...where).query());
158
165
  }
@@ -113,8 +113,12 @@ var SyncDriver = class extends DriverBase {
113
113
  params = params || compiled.params();
114
114
  if ("selection" in query) {
115
115
  const res = stmt.all(params).map((row) => JSON.parse(row.result).result);
116
- if (query.singleResult)
117
- return res[0];
116
+ if (query.singleResult) {
117
+ const row = res[0];
118
+ if (query.validate && !row)
119
+ throw new Error("No row found");
120
+ return row;
121
+ }
118
122
  return res;
119
123
  } else if (query.type === QueryType.Raw) {
120
124
  switch (query.expectedReturn) {
@@ -208,8 +212,12 @@ var AsyncDriver = class extends DriverBase {
208
212
  const res = (await stmt.all(params)).map(
209
213
  (item) => JSON.parse(item.result).result
210
214
  );
211
- if (query.singleResult)
212
- return res[0];
215
+ if (query.singleResult) {
216
+ const row = res[0];
217
+ if (query.validate && !row)
218
+ throw new Error("No row found");
219
+ return row;
220
+ }
213
221
  return res;
214
222
  } else if (query.type === QueryType.Raw) {
215
223
  switch (query.expectedReturn) {
@@ -29,6 +29,7 @@ export declare namespace Query {
29
29
  having?: ExprData;
30
30
  selection?: ExprData;
31
31
  singleResult?: boolean;
32
+ validate?: boolean;
32
33
  }
33
34
  interface Insert extends QueryBase {
34
35
  type: QueryType.Insert;
@@ -9,7 +9,7 @@ import { Update } from './Update';
9
9
  export declare class Table<T> extends Cursor.SelectMultiple<Table.Normalize<T>> {
10
10
  [Selection.__tableType](): Table.Normalize<T>;
11
11
  constructor(schema: Schema);
12
- insertOne(record: Table.Insert<T>): Cursor.Batch<Table.Normalize<T>>;
12
+ insertOne(record: Table.Insert<T>): Cursor<Table.Normalize<T>>;
13
13
  insertAll(data: Array<Table.Insert<T>>): Cursor.InsertValues;
14
14
  set(data: Update<Table.Normalize<T>>): Cursor.Update<Table.Normalize<T>>;
15
15
  delete(): Cursor.Delete;
package/dist/lib/Table.js CHANGED
@@ -33,14 +33,14 @@ var Table = class extends Cursor.SelectMultiple {
33
33
  });
34
34
  }
35
35
  insertOne(record) {
36
- return new Cursor.Batch([
36
+ return new Cursor(
37
37
  Query.Insert({
38
38
  into: this.schema(),
39
39
  data: [record],
40
40
  selection: ExprData.Row(Target.Table(this.schema())),
41
41
  singleResult: true
42
42
  })
43
- ]);
43
+ );
44
44
  }
45
45
  insertAll(data) {
46
46
  return new Cursor.Insert(this.schema()).values(...data);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rado",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {