@m4rctr3y/reutjs 0.1.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.
- package/LICENSE +22 -0
- package/README.md +483 -0
- package/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +48 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/query-builder.d.ts +91 -0
- package/dist/query-builder.d.ts.map +1 -0
- package/dist/query-builder.js +160 -0
- package/dist/query-builder.js.map +1 -0
- package/dist/table.d.ts +56 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +234 -0
- package/dist/table.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +18 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +115 -0
- package/dist/utils.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAoB;IAEnC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAqB5F;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAI1D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAI7D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAIhD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC;;OAEG;IACH,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQlC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAMhE;;OAEG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query builder for constructing complex queries
|
|
3
|
+
*/
|
|
4
|
+
export class QueryBuilder {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.options = {};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Select specific columns
|
|
10
|
+
*/
|
|
11
|
+
select(columns) {
|
|
12
|
+
this.options.select = columns;
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Add a where condition
|
|
17
|
+
* @param column Column name or relationship path (e.g., 'user.name')
|
|
18
|
+
* @param operatorOrValue Operator (if three params) or value (if two params)
|
|
19
|
+
* @param value Value (if operator provided)
|
|
20
|
+
*/
|
|
21
|
+
where(column, operatorOrValue, value) {
|
|
22
|
+
if (!this.options.where) {
|
|
23
|
+
this.options.where = {};
|
|
24
|
+
}
|
|
25
|
+
if (value !== undefined) {
|
|
26
|
+
// Three-parameter version: where(column, operator, value)
|
|
27
|
+
const operator = operatorOrValue;
|
|
28
|
+
if (!this.options.where[column]) {
|
|
29
|
+
this.options.where[column] = {};
|
|
30
|
+
}
|
|
31
|
+
const whereValue = this.options.where[column];
|
|
32
|
+
whereValue[operator] = value;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Two-parameter version: where(column, value) - defaults to eq
|
|
36
|
+
this.options.where[column] = operatorOrValue;
|
|
37
|
+
}
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Add multiple where conditions
|
|
42
|
+
*/
|
|
43
|
+
whereIn(column, values) {
|
|
44
|
+
return this.where(column, 'in', values);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Add a 'not in' condition
|
|
48
|
+
*/
|
|
49
|
+
whereNotIn(column, values) {
|
|
50
|
+
return this.where(column, 'nin', values);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Add a 'like' condition (contains)
|
|
54
|
+
*/
|
|
55
|
+
whereLike(column, value) {
|
|
56
|
+
return this.where(column, 'like', value);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Add a 'greater than' condition
|
|
60
|
+
*/
|
|
61
|
+
whereGt(column, value) {
|
|
62
|
+
return this.where(column, 'gt', value);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Add a 'greater than or equal' condition
|
|
66
|
+
*/
|
|
67
|
+
whereGte(column, value) {
|
|
68
|
+
return this.where(column, 'gte', value);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Add a 'less than' condition
|
|
72
|
+
*/
|
|
73
|
+
whereLt(column, value) {
|
|
74
|
+
return this.where(column, 'lt', value);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Add a 'less than or equal' condition
|
|
78
|
+
*/
|
|
79
|
+
whereLte(column, value) {
|
|
80
|
+
return this.where(column, 'lte', value);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Add a 'not equal' condition
|
|
84
|
+
*/
|
|
85
|
+
whereNe(column, value) {
|
|
86
|
+
return this.where(column, 'ne', value);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Add an 'is null' condition
|
|
90
|
+
*/
|
|
91
|
+
whereIsNull(column) {
|
|
92
|
+
return this.where(column, 'is', null);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Add an 'is not null' condition
|
|
96
|
+
*/
|
|
97
|
+
whereIsNotNull(column) {
|
|
98
|
+
return this.where(column, 'isn', null);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Eager load relationships
|
|
102
|
+
*/
|
|
103
|
+
with(relationships) {
|
|
104
|
+
this.options.with = relationships;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Add a manual join
|
|
109
|
+
*/
|
|
110
|
+
join(joinConfig) {
|
|
111
|
+
if (!this.options.joins) {
|
|
112
|
+
this.options.joins = [];
|
|
113
|
+
}
|
|
114
|
+
this.options.joins.push(joinConfig);
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Set page number for pagination
|
|
119
|
+
*/
|
|
120
|
+
page(page) {
|
|
121
|
+
this.options.page = page;
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Set limit for pagination
|
|
126
|
+
*/
|
|
127
|
+
limit(limit) {
|
|
128
|
+
this.options.limit = limit;
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Set offset for pagination
|
|
133
|
+
*/
|
|
134
|
+
offset(offset) {
|
|
135
|
+
this.options.offset = offset;
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Order by column
|
|
140
|
+
*/
|
|
141
|
+
orderBy(column, direction = 'asc') {
|
|
142
|
+
this.options.orderBy = column;
|
|
143
|
+
this.options.order = direction;
|
|
144
|
+
return this;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get the built query options
|
|
148
|
+
*/
|
|
149
|
+
getOptions() {
|
|
150
|
+
return { ...this.options };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Reset the query builder
|
|
154
|
+
*/
|
|
155
|
+
reset() {
|
|
156
|
+
this.options = {};
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=query-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/table.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type AxiosInstance } from 'axios';
|
|
2
|
+
import { QueryBuilder } from './query-builder.js';
|
|
3
|
+
import type { QueryOptions, PaginatedResponse, SingleResponse, WhereOperator, WhereValue } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Table class representing a database table
|
|
6
|
+
*/
|
|
7
|
+
export declare class Table<T = any> {
|
|
8
|
+
private axiosInstance;
|
|
9
|
+
private tableName;
|
|
10
|
+
private queryBuilder;
|
|
11
|
+
constructor(axiosInstance: AxiosInstance, tableName: string);
|
|
12
|
+
/**
|
|
13
|
+
* Get query builder for chaining query methods
|
|
14
|
+
*/
|
|
15
|
+
select(columns: string[]): this;
|
|
16
|
+
where(column: string, operatorOrValue: WhereOperator | WhereValue, value?: WhereValue): this;
|
|
17
|
+
whereIn(column: string, values: (string | number)[]): this;
|
|
18
|
+
whereNotIn(column: string, values: (string | number)[]): this;
|
|
19
|
+
whereLike(column: string, value: string): this;
|
|
20
|
+
whereGt(column: string, value: number): this;
|
|
21
|
+
whereGte(column: string, value: number): this;
|
|
22
|
+
whereLt(column: string, value: number): this;
|
|
23
|
+
whereLte(column: string, value: number): this;
|
|
24
|
+
whereNe(column: string, value: WhereValue): this;
|
|
25
|
+
whereIsNull(column: string): this;
|
|
26
|
+
whereIsNotNull(column: string): this;
|
|
27
|
+
with(relationships: string[]): this;
|
|
28
|
+
join(joinConfig: Parameters<QueryBuilder['join']>[0]): this;
|
|
29
|
+
page(page: number): this;
|
|
30
|
+
limit(limit: number): this;
|
|
31
|
+
offset(offset: number): this;
|
|
32
|
+
orderBy(column: string, direction?: 'asc' | 'desc'): this;
|
|
33
|
+
/**
|
|
34
|
+
* Get all records with optional query builder options
|
|
35
|
+
*/
|
|
36
|
+
all(options?: QueryOptions): Promise<PaginatedResponse<T>>;
|
|
37
|
+
/**
|
|
38
|
+
* Find a single record by ID
|
|
39
|
+
*/
|
|
40
|
+
find(id: string | number, options?: {
|
|
41
|
+
with?: string[];
|
|
42
|
+
}): Promise<SingleResponse<T>>;
|
|
43
|
+
/**
|
|
44
|
+
* Create a new record
|
|
45
|
+
*/
|
|
46
|
+
add(data: Partial<T>): Promise<SingleResponse<T>>;
|
|
47
|
+
/**
|
|
48
|
+
* Update a record by ID
|
|
49
|
+
*/
|
|
50
|
+
update(id: string | number, data: Partial<T>): Promise<SingleResponse<T>>;
|
|
51
|
+
/**
|
|
52
|
+
* Delete a record by ID
|
|
53
|
+
*/
|
|
54
|
+
delete(id: string | number): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7G;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC,GAAG,GAAG;IACxB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAe;gBAEvB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;IAM3D;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAK5F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAK1D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAK7D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAKhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKjC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKpC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAK3D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAKhE;;OAEG;IACG,GAAG,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAwBhE;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAyB1F;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAqDvD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAoC/E;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjD"}
|
package/dist/table.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { QueryBuilder } from './query-builder.js';
|
|
3
|
+
import { buildQueryString, parseResponse, isErrorResponse, extractErrorMessage } from './utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Table class representing a database table
|
|
6
|
+
*/
|
|
7
|
+
export class Table {
|
|
8
|
+
constructor(axiosInstance, tableName) {
|
|
9
|
+
this.axiosInstance = axiosInstance;
|
|
10
|
+
this.tableName = tableName;
|
|
11
|
+
this.queryBuilder = new QueryBuilder();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get query builder for chaining query methods
|
|
15
|
+
*/
|
|
16
|
+
select(columns) {
|
|
17
|
+
this.queryBuilder.select(columns);
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
where(column, operatorOrValue, value) {
|
|
21
|
+
this.queryBuilder.where(column, operatorOrValue, value);
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
whereIn(column, values) {
|
|
25
|
+
this.queryBuilder.whereIn(column, values);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
whereNotIn(column, values) {
|
|
29
|
+
this.queryBuilder.whereNotIn(column, values);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
whereLike(column, value) {
|
|
33
|
+
this.queryBuilder.whereLike(column, value);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
whereGt(column, value) {
|
|
37
|
+
this.queryBuilder.whereGt(column, value);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
whereGte(column, value) {
|
|
41
|
+
this.queryBuilder.whereGte(column, value);
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
whereLt(column, value) {
|
|
45
|
+
this.queryBuilder.whereLt(column, value);
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
whereLte(column, value) {
|
|
49
|
+
this.queryBuilder.whereLte(column, value);
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
whereNe(column, value) {
|
|
53
|
+
this.queryBuilder.whereNe(column, value);
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
whereIsNull(column) {
|
|
57
|
+
this.queryBuilder.whereIsNull(column);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
whereIsNotNull(column) {
|
|
61
|
+
this.queryBuilder.whereIsNotNull(column);
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
with(relationships) {
|
|
65
|
+
this.queryBuilder.with(relationships);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
join(joinConfig) {
|
|
69
|
+
this.queryBuilder.join(joinConfig);
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
page(page) {
|
|
73
|
+
this.queryBuilder.page(page);
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
limit(limit) {
|
|
77
|
+
this.queryBuilder.limit(limit);
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
offset(offset) {
|
|
81
|
+
this.queryBuilder.offset(offset);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
orderBy(column, direction = 'asc') {
|
|
85
|
+
this.queryBuilder.orderBy(column, direction);
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get all records with optional query builder options
|
|
90
|
+
*/
|
|
91
|
+
async all(options) {
|
|
92
|
+
const queryOptions = options || this.queryBuilder.getOptions();
|
|
93
|
+
const queryString = buildQueryString(queryOptions);
|
|
94
|
+
try {
|
|
95
|
+
const response = await this.axiosInstance.get(`/${this.tableName}/all${queryString}`);
|
|
96
|
+
if (isErrorResponse(response.data)) {
|
|
97
|
+
throw new Error(extractErrorMessage(response.data));
|
|
98
|
+
}
|
|
99
|
+
return parseResponse(response.data);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (axios.isAxiosError(error)) {
|
|
103
|
+
throw new Error(error.response?.data?.error || error.message);
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
this.queryBuilder.reset();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Find a single record by ID
|
|
113
|
+
*/
|
|
114
|
+
async find(id, options) {
|
|
115
|
+
const queryOptions = {};
|
|
116
|
+
if (options?.with) {
|
|
117
|
+
queryOptions.with = options.with;
|
|
118
|
+
}
|
|
119
|
+
const queryString = buildQueryString(queryOptions);
|
|
120
|
+
try {
|
|
121
|
+
const response = await this.axiosInstance.get(`/${this.tableName}/find/${id}${queryString}`);
|
|
122
|
+
if (isErrorResponse(response.data)) {
|
|
123
|
+
throw new Error(extractErrorMessage(response.data));
|
|
124
|
+
}
|
|
125
|
+
return parseResponse(response.data);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (axios.isAxiosError(error)) {
|
|
129
|
+
throw new Error(error.response?.data?.error || error.message);
|
|
130
|
+
}
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Create a new record
|
|
136
|
+
*/
|
|
137
|
+
async add(data) {
|
|
138
|
+
try {
|
|
139
|
+
const response = await this.axiosInstance.post(`/${this.tableName}/add`, data);
|
|
140
|
+
// Handle status response: { status: true } or { status: false } or { status: "error" }
|
|
141
|
+
if (response.data && typeof response.data === 'object' && 'status' in response.data) {
|
|
142
|
+
if (response.data.status === true) {
|
|
143
|
+
// Success - try to fetch the created record by querying with the data we just inserted
|
|
144
|
+
// This is a workaround since the API doesn't return the created record
|
|
145
|
+
const queryData = { ...data };
|
|
146
|
+
// Remove fields that might not be unique
|
|
147
|
+
const uniqueFields = Object.keys(queryData).filter(key => !['created_at', 'updated_at'].includes(key));
|
|
148
|
+
if (uniqueFields.length > 0) {
|
|
149
|
+
const filterData = {};
|
|
150
|
+
uniqueFields.forEach(key => {
|
|
151
|
+
filterData[key] = queryData[key];
|
|
152
|
+
});
|
|
153
|
+
const results = await this.all({ where: filterData, limit: 1 });
|
|
154
|
+
if (results.results.length > 0) {
|
|
155
|
+
return results.results[0];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// If we can't find it, return the data we sent (not ideal, but better than nothing)
|
|
159
|
+
return data;
|
|
160
|
+
}
|
|
161
|
+
else if (response.data.status === false) {
|
|
162
|
+
throw new Error('Failed to create record');
|
|
163
|
+
}
|
|
164
|
+
else if (typeof response.data.status === 'string') {
|
|
165
|
+
throw new Error(response.data.status);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (isErrorResponse(response.data)) {
|
|
169
|
+
throw new Error(extractErrorMessage(response.data));
|
|
170
|
+
}
|
|
171
|
+
return parseResponse(response.data);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
if (axios.isAxiosError(error)) {
|
|
175
|
+
const errorData = error.response?.data;
|
|
176
|
+
if (errorData && typeof errorData === 'object' && 'status' in errorData && typeof errorData.status === 'string') {
|
|
177
|
+
throw new Error(errorData.status);
|
|
178
|
+
}
|
|
179
|
+
throw new Error(errorData?.error || error.message);
|
|
180
|
+
}
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Update a record by ID
|
|
186
|
+
*/
|
|
187
|
+
async update(id, data) {
|
|
188
|
+
try {
|
|
189
|
+
const response = await this.axiosInstance.put(`/${this.tableName}/update/${id}`, data);
|
|
190
|
+
// Handle status response: { status: true } or { status: false } or { status: "error" }
|
|
191
|
+
if (response.data && typeof response.data === 'object' && 'status' in response.data) {
|
|
192
|
+
if (response.data.status === true) {
|
|
193
|
+
// Success - fetch the updated record
|
|
194
|
+
return await this.find(id);
|
|
195
|
+
}
|
|
196
|
+
else if (response.data.status === false) {
|
|
197
|
+
throw new Error('Failed to update record');
|
|
198
|
+
}
|
|
199
|
+
else if (typeof response.data.status === 'string') {
|
|
200
|
+
throw new Error(response.data.status);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (isErrorResponse(response.data)) {
|
|
204
|
+
throw new Error(extractErrorMessage(response.data));
|
|
205
|
+
}
|
|
206
|
+
return parseResponse(response.data);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
if (axios.isAxiosError(error)) {
|
|
210
|
+
const errorData = error.response?.data;
|
|
211
|
+
if (errorData && typeof errorData === 'object' && 'status' in errorData && typeof errorData.status === 'string') {
|
|
212
|
+
throw new Error(errorData.status);
|
|
213
|
+
}
|
|
214
|
+
throw new Error(errorData?.error || error.message);
|
|
215
|
+
}
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Delete a record by ID
|
|
221
|
+
*/
|
|
222
|
+
async delete(id) {
|
|
223
|
+
try {
|
|
224
|
+
await this.axiosInstance.delete(`/${this.tableName}/delete/${id}`);
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
if (axios.isAxiosError(error)) {
|
|
228
|
+
throw new Error(error.response?.data?.error || error.message);
|
|
229
|
+
}
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the ReutClient
|
|
3
|
+
*/
|
|
4
|
+
export interface ReutClientConfig {
|
|
5
|
+
/** Base URL of the Reut API server */
|
|
6
|
+
url: string;
|
|
7
|
+
/** Optional authentication token */
|
|
8
|
+
token?: string;
|
|
9
|
+
/** Optional axios instance configuration */
|
|
10
|
+
axiosConfig?: import('axios').AxiosRequestConfig;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Join configuration for manual joins
|
|
14
|
+
*/
|
|
15
|
+
export interface JoinConfig {
|
|
16
|
+
/** Table name to join */
|
|
17
|
+
table: string;
|
|
18
|
+
/** Local column name */
|
|
19
|
+
localColumn: string;
|
|
20
|
+
/** Reference column name */
|
|
21
|
+
refColumn: string;
|
|
22
|
+
/** Join type: INNER, LEFT, RIGHT, etc. */
|
|
23
|
+
type?: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
|
|
24
|
+
/** Optional alias for the joined table */
|
|
25
|
+
alias?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Where condition operators
|
|
29
|
+
*/
|
|
30
|
+
export type WhereOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'in' | 'nin' | 'is' | 'isn';
|
|
31
|
+
/**
|
|
32
|
+
* Where condition value
|
|
33
|
+
*/
|
|
34
|
+
export type WhereValue = string | number | boolean | null | (string | number)[];
|
|
35
|
+
/**
|
|
36
|
+
* Where condition structure
|
|
37
|
+
*/
|
|
38
|
+
export interface WhereCondition {
|
|
39
|
+
column: string;
|
|
40
|
+
operator?: WhereOperator;
|
|
41
|
+
value?: WhereValue;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Query options for building queries
|
|
45
|
+
*/
|
|
46
|
+
export interface QueryOptions {
|
|
47
|
+
/** Columns to select */
|
|
48
|
+
select?: string[];
|
|
49
|
+
/** Where conditions */
|
|
50
|
+
where?: Record<string, WhereValue | Record<WhereOperator, WhereValue>>;
|
|
51
|
+
/** Relationships to eager load */
|
|
52
|
+
with?: string[];
|
|
53
|
+
/** Manual joins */
|
|
54
|
+
joins?: JoinConfig[];
|
|
55
|
+
/** Page number for pagination */
|
|
56
|
+
page?: number;
|
|
57
|
+
/** Limit per page */
|
|
58
|
+
limit?: number;
|
|
59
|
+
/** Offset for pagination */
|
|
60
|
+
offset?: number;
|
|
61
|
+
/** Order by column */
|
|
62
|
+
orderBy?: string;
|
|
63
|
+
/** Order direction */
|
|
64
|
+
order?: 'asc' | 'desc';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Paginated response structure
|
|
68
|
+
*/
|
|
69
|
+
export interface PaginatedResponse<T> {
|
|
70
|
+
/** Array of results */
|
|
71
|
+
results: T[];
|
|
72
|
+
/** Total number of pages */
|
|
73
|
+
totalPages: number;
|
|
74
|
+
/** Current page number */
|
|
75
|
+
page: number;
|
|
76
|
+
/** Items per page */
|
|
77
|
+
limit: number;
|
|
78
|
+
/** Total number of items */
|
|
79
|
+
totalItems: number;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Single record response
|
|
83
|
+
*/
|
|
84
|
+
export type SingleResponse<T> = T;
|
|
85
|
+
/**
|
|
86
|
+
* Error response structure
|
|
87
|
+
*/
|
|
88
|
+
export interface ErrorResponse {
|
|
89
|
+
error: string;
|
|
90
|
+
message?: string;
|
|
91
|
+
code?: number;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,OAAO,EAAE,kBAAkB,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,MAAM,GACN,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IACvE,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mBAAmB;IACnB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,uBAAuB;IACvB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { QueryOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build query string from query options
|
|
4
|
+
*/
|
|
5
|
+
export declare function buildQueryString(options: QueryOptions): string;
|
|
6
|
+
/**
|
|
7
|
+
* Parse response data
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseResponse<T>(data: any): T;
|
|
10
|
+
/**
|
|
11
|
+
* Check if response is an error
|
|
12
|
+
*/
|
|
13
|
+
export declare function isErrorResponse(data: any): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Extract error message from response
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractErrorMessage(data: any): string;
|
|
18
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAyC,MAAM,YAAY,CAAC;AAEtF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA0E9D;AAiBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,CAI7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAQrD"}
|