sqlite-hub 0.9.13 → 0.11.1

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.
@@ -8,6 +8,7 @@ test("data browser mutations preserve quoted dynamic identifiers", () => {
8
8
  const db = new Database(":memory:");
9
9
  const tableName = 'items" archived';
10
10
  const valueColumn = 'display"name';
11
+ const noteColumn = 'review"note';
11
12
 
12
13
  try {
13
14
  db.exec(
@@ -16,7 +17,9 @@ test("data browser mutations preserve quoted dynamic identifiers", () => {
16
17
  quoteIdentifier(tableName),
17
18
  "(",
18
19
  quoteIdentifier(valueColumn),
19
- "TEXT, status INTEGER",
20
+ "TEXT, status INTEGER,",
21
+ quoteIdentifier(noteColumn),
22
+ "TEXT",
20
23
  ")",
21
24
  ].join(" ")
22
25
  );
@@ -24,10 +27,10 @@ test("data browser mutations preserve quoted dynamic identifiers", () => {
24
27
  [
25
28
  "INSERT INTO",
26
29
  quoteIdentifier(tableName),
27
- "(" + quoteIdentifier(valueColumn) + ", status)",
28
- "VALUES (?, ?)",
30
+ "(" + quoteIdentifier(valueColumn) + ", status, " + quoteIdentifier(noteColumn) + ")",
31
+ "VALUES (?, ?, ?)",
29
32
  ].join(" ")
30
- ).run("before", 0);
33
+ ).run("before", 0, null);
31
34
 
32
35
  const service = new DataBrowserService({
33
36
  connectionManager: {
@@ -36,20 +39,116 @@ test("data browser mutations preserve quoted dynamic identifiers", () => {
36
39
  },
37
40
  });
38
41
  const tableData = service.getTableData(tableName, { limit: 10, offset: 0 });
42
+ const filteredTableData = service.getTableData(tableName, {
43
+ limit: 10,
44
+ offset: 0,
45
+ filterColumn: valueColumn,
46
+ filterOperator: "=",
47
+ filterValue: "EFO",
48
+ });
49
+ const negativeFilteredTableData = service.getTableData(tableName, {
50
+ limit: 10,
51
+ offset: 0,
52
+ filterColumn: valueColumn,
53
+ filterOperator: "!=",
54
+ filterValue: "EFO",
55
+ });
56
+ const exactFilteredTableData = service.getTableData(tableName, {
57
+ limit: 10,
58
+ offset: 0,
59
+ filterColumn: valueColumn,
60
+ filterOperator: "equals",
61
+ filterValue: "BEFORE",
62
+ });
63
+ const exactSubstringMissTableData = service.getTableData(tableName, {
64
+ limit: 10,
65
+ offset: 0,
66
+ filterColumn: valueColumn,
67
+ filterOperator: "equals",
68
+ filterValue: "EFO",
69
+ });
70
+
71
+ assert.equal(filteredTableData.rowCount, 1);
72
+ assert.equal(filteredTableData.rows[0][valueColumn], "before");
73
+ assert.deepEqual(filteredTableData.filter, {
74
+ column: valueColumn,
75
+ operator: "=",
76
+ value: "EFO",
77
+ matchMode: "contains",
78
+ });
79
+ assert.equal(negativeFilteredTableData.rowCount, 0);
80
+ assert.equal(exactFilteredTableData.rowCount, 1);
81
+ assert.equal(exactFilteredTableData.rows[0][valueColumn], "before");
82
+ assert.deepEqual(exactFilteredTableData.filter, {
83
+ column: valueColumn,
84
+ operator: "equals",
85
+ value: "BEFORE",
86
+ matchMode: "equals",
87
+ });
88
+ assert.equal(exactSubstringMissTableData.rowCount, 0);
89
+ assert.throws(
90
+ () =>
91
+ service.getTableData(tableName, {
92
+ limit: 10,
93
+ offset: 0,
94
+ filterColumn: valueColumn,
95
+ filterOperator: "<>",
96
+ filterValue: "before",
97
+ }),
98
+ /filterOperator/
99
+ );
100
+
39
101
  const identity = tableData.rows[0].__identity;
102
+ const preview = service.previewTableRowUpdate(tableName, {
103
+ identity,
104
+ values: {
105
+ [valueColumn]: "after",
106
+ status: 0,
107
+ [noteColumn]: "",
108
+ },
109
+ });
110
+
111
+ assert.equal(
112
+ preview.sql,
113
+ [
114
+ "UPDATE",
115
+ quoteIdentifier(tableName),
116
+ "SET",
117
+ quoteIdentifier(valueColumn) + " = ?",
118
+ "WHERE",
119
+ "rowid IS ?",
120
+ ].join(" ")
121
+ );
122
+ assert.deepEqual(preview.changes, [
123
+ {
124
+ column: valueColumn,
125
+ oldValue: "before",
126
+ newValue: "after",
127
+ },
128
+ ]);
40
129
 
41
130
  const updated = service.updateTableRow(tableName, {
42
131
  identity,
43
132
  values: {
44
133
  [valueColumn]: "after",
134
+ [noteColumn]: "",
45
135
  },
46
136
  });
47
137
 
48
138
  assert.equal(updated.row[valueColumn], "after");
49
- assert.equal(
50
- db.prepare(["SELECT", quoteIdentifier(valueColumn), "FROM", quoteIdentifier(tableName)].join(" ")).get()[valueColumn],
51
- "after"
52
- );
139
+ assert.equal(updated.row[noteColumn], null);
140
+ const persistedRow = db.prepare(
141
+ [
142
+ "SELECT",
143
+ quoteIdentifier(valueColumn) + ",",
144
+ quoteIdentifier(noteColumn),
145
+ "FROM",
146
+ quoteIdentifier(tableName),
147
+ ].join(" ")
148
+ ).get();
149
+
150
+ assert.equal(persistedRow[valueColumn], "after");
151
+ assert.equal(persistedRow[noteColumn], null);
53
152
 
54
153
  const deleted = service.deleteTableRow(tableName, {
55
154
  identity: updated.row.__identity,