@sfutureapps/db-sdk 0.3.20 → 0.3.21

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.d.ts +97 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sfutureapps/db-sdk",
3
- "version": "0.3.20",
3
+ "version": "0.3.21",
4
4
  "description": "SfutureApps JS SDK for ThinkPHP DB Gateway (MySQL)",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/index.d.ts CHANGED
@@ -1,4 +1,100 @@
1
1
  // src/index.d.ts
2
+ export type QueryError = {
3
+ message: string;
4
+ [key: string]: any;
5
+ };
6
+
7
+ export type QueryMeta = {
8
+ page?: number;
9
+ limit?: number;
10
+ offset?: number;
11
+ total?: number;
12
+ last_page?: number;
13
+ [key: string]: any;
14
+ };
15
+
16
+ export type QueryResponse<T> = {
17
+ data: T;
18
+ error: QueryError | null;
19
+ count?: number | null;
20
+ meta?: QueryMeta | null;
21
+ [key: string]: any;
22
+ };
23
+
24
+ export type OrderOptions = {
25
+ ascending?: boolean;
26
+ };
27
+
28
+ export class QueryBuilder<T = any, TSingle extends boolean = false> {
29
+ constructor(table: string);
30
+
31
+ // ---- select ----
32
+ select(columns?: "*" | string | string[]): QueryBuilder<T, TSingle>;
33
+
34
+ // ---- filters ----
35
+ eq(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
36
+ neq(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
37
+ gt(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
38
+ gte(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
39
+ lt(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
40
+ lte(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
41
+
42
+ like(col: keyof T | string, val: string): QueryBuilder<T, TSingle>;
43
+ notLike(col: keyof T | string, val: string): QueryBuilder<T, TSingle>;
44
+
45
+ between(col: keyof T | string, range: [any, any]): QueryBuilder<T, TSingle>;
46
+ notBetween(col: keyof T | string, range: [any, any]): QueryBuilder<T, TSingle>;
47
+
48
+ in(col: keyof T | string, vals: any[]): QueryBuilder<T, TSingle>;
49
+ notIn(col: keyof T | string, vals: any[]): QueryBuilder<T, TSingle>;
50
+
51
+ isNull(col: keyof T | string): QueryBuilder<T, TSingle>;
52
+ notNull(col: keyof T | string): QueryBuilder<T, TSingle>;
53
+
54
+ regexp(col: keyof T | string, pattern: string): QueryBuilder<T, TSingle>;
55
+ notRegexp(col: keyof T | string, pattern: string): QueryBuilder<T, TSingle>;
56
+
57
+ whereTime(col: keyof T | string, op: string, time: any): QueryBuilder<T, TSingle>;
58
+ betweenTime(col: keyof T | string, range: [any, any]): QueryBuilder<T, TSingle>;
59
+
60
+ findInSet(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
61
+
62
+ // ---- order ----
63
+ order(col: keyof T | string, opts?: OrderOptions): QueryBuilder<T, TSingle>;
64
+
65
+ // ---- pagination ----
66
+ limit(n: number): QueryBuilder<T, TSingle>;
67
+ page(page: number, limit: number): QueryBuilder<T, TSingle>;
68
+ range(from: number, to: number): QueryBuilder<T, TSingle>;
69
+ withCount(): QueryBuilder<T, TSingle>;
70
+ single(): QueryBuilder<T, true>;
71
+
72
+ // ---- group/having/distinct ----
73
+ distinct(): QueryBuilder<T, TSingle>;
74
+ group(cols: string | string[]): QueryBuilder<T, TSingle>;
75
+ havingEq(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
76
+ havingGte(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
77
+ havingLte(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
78
+ havingGt(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
79
+ havingLt(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
80
+ havingNeq(col: keyof T | string, val: any): QueryBuilder<T, TSingle>;
81
+
82
+ // ---- execute ----
83
+ execute(): Promise<QueryResponse<TSingle extends true ? T | null : T[]>>;
84
+
85
+ // ---- aggregates ----
86
+ count(field?: keyof T | string): Promise<QueryResponse<number>>;
87
+ sum(field: keyof T | string): Promise<QueryResponse<number>>;
88
+ avg(field: keyof T | string): Promise<QueryResponse<number>>;
89
+ min(field: keyof T | string): Promise<QueryResponse<number>>;
90
+ max(field: keyof T | string): Promise<QueryResponse<number>>;
91
+
92
+ // ---- write ----
93
+ insert(values: Partial<T> | Array<Partial<T>> | Record<string, any>): Promise<QueryResponse<any>>;
94
+ update(values: Partial<T> | Record<string, any>): Promise<QueryResponse<any>>;
95
+ delete(): Promise<QueryResponse<any>>;
96
+ }
97
+
2
98
  export function createClient(
3
99
  baseUrl: string,
4
100
  opts?: {
@@ -7,5 +103,5 @@ export function createClient(
7
103
  headers?: Record<string, string>;
8
104
  }
9
105
  ): {
10
- from<T = any>(table: string): any;
106
+ from<T = any>(table: string): QueryBuilder<T, false>;
11
107
  };