flowerbi 3.10.3 → 3.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.
@@ -1,4 +1,4 @@
1
- import { FilterValue, AggregationType, FilterJson, AggregationJson, OrderingJson } from "./QueryJson";
1
+ import { FilterValue, AggregationType, FilterJson, AggregationJson, FilterOperator, OrderingJson } from "./QueryJson";
2
2
  /**
3
3
  * A column from the schema, with a name and a data type. A whole schema of
4
4
  * such declared columns can be auto-generated using the CLI.
@@ -30,7 +30,7 @@ export declare class QueryColumn<T extends FilterValue> {
30
30
  * @param filters Optional filters to apply.
31
31
  */
32
32
  max(filters?: FilterJson[]): AggregationJson;
33
- private filter;
33
+ protected filter(operator: FilterOperator, value: T): FilterJson;
34
34
  /**
35
35
  * Sorts by the column in ascending order.
36
36
  */
@@ -71,6 +71,11 @@ export declare class QueryColumn<T extends FilterValue> {
71
71
  * Only supported for number or string columns.
72
72
  */
73
73
  in(value: T extends number | string ? T[] : never): FilterJson;
74
+ /**
75
+ * Produces a filter that requires this column's value to not appear in the list.
76
+ * Only supported for number or string columns.
77
+ */
78
+ notIn(value: T extends number | string ? T[] : never): FilterJson;
74
79
  }
75
80
  export declare class NumericQueryColumn<T extends number | null = number> extends QueryColumn<T> {
76
81
  readonly name: string;
@@ -89,3 +94,12 @@ export declare class NumericQueryColumn<T extends number | null = number> extend
89
94
  */
90
95
  avg(filters?: FilterJson[]): AggregationJson;
91
96
  }
97
+ export declare class IntegerQueryColumn<T extends number | null = number> extends NumericQueryColumn<T> {
98
+ readonly name: string;
99
+ /**
100
+ * @param name The name, of the form `table.column`.
101
+ */
102
+ constructor(name: string);
103
+ bitsOn(value: NonNullable<T>): FilterJson;
104
+ bitsOff(value: NonNullable<T>): FilterJson;
105
+ }
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
15
15
  };
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.NumericQueryColumn = exports.QueryColumn = void 0;
18
+ exports.IntegerQueryColumn = exports.NumericQueryColumn = exports.QueryColumn = void 0;
19
19
  /**
20
20
  * A column from the schema, with a name and a data type. A whole schema of
21
21
  * such declared columns can be auto-generated using the CLI.
@@ -131,6 +131,17 @@ var QueryColumn = /** @class */ (function () {
131
131
  value: value,
132
132
  };
133
133
  };
134
+ /**
135
+ * Produces a filter that requires this column's value to not appear in the list.
136
+ * Only supported for number or string columns.
137
+ */
138
+ QueryColumn.prototype.notIn = function (value) {
139
+ return {
140
+ column: this.name,
141
+ operator: "IN",
142
+ value: value,
143
+ };
144
+ };
134
145
  return QueryColumn;
135
146
  }());
136
147
  exports.QueryColumn = QueryColumn;
@@ -161,4 +172,23 @@ var NumericQueryColumn = /** @class */ (function (_super) {
161
172
  return NumericQueryColumn;
162
173
  }(QueryColumn));
163
174
  exports.NumericQueryColumn = NumericQueryColumn;
175
+ var IntegerQueryColumn = /** @class */ (function (_super) {
176
+ __extends(IntegerQueryColumn, _super);
177
+ /**
178
+ * @param name The name, of the form `table.column`.
179
+ */
180
+ function IntegerQueryColumn(name) {
181
+ var _this = _super.call(this, name) || this;
182
+ _this.name = name;
183
+ return _this;
184
+ }
185
+ IntegerQueryColumn.prototype.bitsOn = function (value) {
186
+ return this.filter("BITS ON", value);
187
+ };
188
+ IntegerQueryColumn.prototype.bitsOff = function (value) {
189
+ return this.filter("BITS OFF", value);
190
+ };
191
+ return IntegerQueryColumn;
192
+ }(NumericQueryColumn));
193
+ exports.IntegerQueryColumn = IntegerQueryColumn;
164
194
  //# sourceMappingURL=QueryColumn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryColumn.js","sourceRoot":"","sources":["../src/QueryColumn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryColumn.js","sourceRoot":"","sources":["../src/QueryColumn.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The allowed filter comparison operators.
3
3
  */
4
- export declare type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN";
4
+ export declare type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS ON" | "BITS OFF";
5
5
  /**
6
6
  * The allowed value types for a filter.
7
7
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowerbi",
3
- "version": "3.10.3",
3
+ "version": "3.11.1",
4
4
  "author": "Daniel Earwicker <dan@earwicker.com>",
5
5
  "license": "MIT",
6
6
  "description": "FlowerBI: ultra-minimal BI analytics query and UI tools",
@@ -50,7 +50,7 @@ export class QueryColumn<T extends FilterValue> {
50
50
  return this.aggregation("Max", filters);
51
51
  }
52
52
 
53
- private filter(operator: FilterOperator, value: T): FilterJson {
53
+ protected filter(operator: FilterOperator, value: T): FilterJson {
54
54
  return {
55
55
  column: this.name,
56
56
  operator,
@@ -128,6 +128,18 @@ export class QueryColumn<T extends FilterValue> {
128
128
  value,
129
129
  };
130
130
  }
131
+
132
+ /**
133
+ * Produces a filter that requires this column's value to not appear in the list.
134
+ * Only supported for number or string columns.
135
+ */
136
+ notIn(value: T extends number | string ? T[] : never): FilterJson {
137
+ return {
138
+ column: this.name,
139
+ operator: "IN",
140
+ value,
141
+ };
142
+ }
131
143
  }
132
144
 
133
145
  export class NumericQueryColumn<T extends number | null = number> extends QueryColumn<T> {
@@ -154,3 +166,20 @@ export class NumericQueryColumn<T extends number | null = number> extends QueryC
154
166
  return this.aggregation("Avg", filters);
155
167
  }
156
168
  }
169
+
170
+ export class IntegerQueryColumn<T extends number | null = number> extends NumericQueryColumn<T> {
171
+ /**
172
+ * @param name The name, of the form `table.column`.
173
+ */
174
+ constructor(public readonly name: string) {
175
+ super(name);
176
+ }
177
+
178
+ bitsOn(value: NonNullable<T>) {
179
+ return this.filter("BITS ON", value);
180
+ }
181
+
182
+ bitsOff(value: NonNullable<T>) {
183
+ return this.filter("BITS OFF", value);
184
+ }
185
+ }
package/src/QueryJson.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The allowed filter comparison operators.
3
3
  */
4
- export type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN";
4
+ export type FilterOperator = "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS ON" | "BITS OFF";
5
5
 
6
6
  /**
7
7
  * The allowed value types for a filter.