@asla/yoursql 0.9.3 → 0.10.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.
Files changed (48) hide show
  1. package/README.md +11 -11
  2. package/dist/sql_gen/{select/chain_base.d.ts → SqlStatement.d.ts} +13 -3
  3. package/dist/sql_gen/{select/chain_base.js → SqlStatement.js} +5 -2
  4. package/dist/sql_gen/_statement.d.ts +29 -0
  5. package/dist/sql_gen/_statement.js +127 -0
  6. package/dist/sql_gen/mod.d.ts +3 -8
  7. package/dist/sql_gen/mod.js +7 -6
  8. package/dist/sql_gen/sql_value/ValueSqlTemplate.d.ts +13 -0
  9. package/dist/sql_gen/sql_value/ValueSqlTemplate.js +30 -0
  10. package/dist/sql_gen/sql_value/_utils.d.ts +11 -0
  11. package/dist/sql_gen/sql_value/_utils.js +37 -0
  12. package/dist/sql_gen/sql_value/sql_value.d.ts +23 -22
  13. package/dist/sql_gen/sql_value/sql_value.js +25 -48
  14. package/dist/sql_gen/sql_value/type.d.ts +19 -0
  15. package/dist/sql_gen/statement/_modify.d.ts +6 -0
  16. package/dist/sql_gen/statement/delete.d.ts +15 -0
  17. package/dist/sql_gen/statement/delete.js +46 -0
  18. package/dist/sql_gen/statement/delete_chain.d.ts +26 -0
  19. package/dist/sql_gen/statement/insert.d.ts +6 -0
  20. package/dist/sql_gen/statement/insert.js +107 -0
  21. package/dist/sql_gen/statement/insert_chain.d.ts +28 -0
  22. package/dist/sql_gen/statement/mod.d.ts +10 -0
  23. package/dist/sql_gen/statement/select.d.ts +38 -0
  24. package/dist/sql_gen/statement/select.js +154 -0
  25. package/dist/sql_gen/statement/select_chain.d.ts +102 -0
  26. package/dist/sql_gen/statement/update.d.ts +17 -0
  27. package/dist/sql_gen/statement/update.js +88 -0
  28. package/dist/sql_gen/statement/update_chain.d.ts +36 -0
  29. package/dist/sql_gen/util.d.ts +20 -53
  30. package/dist/sql_gen/util.js +1 -118
  31. package/dist/sql_gen/your_table/table.d.ts +4 -5
  32. package/dist/sql_gen/your_table/table.js +4 -4
  33. package/package.json +1 -1
  34. package/dist/sql_gen/select/DbTable.d.ts +0 -58
  35. package/dist/sql_gen/select/DbTable.js +0 -78
  36. package/dist/sql_gen/select/TableQuery.d.ts +0 -28
  37. package/dist/sql_gen/select/TableQuery.js +0 -73
  38. package/dist/sql_gen/select/_statement.d.ts +0 -9
  39. package/dist/sql_gen/select/_statement.js +0 -63
  40. package/dist/sql_gen/select/chain_modify.d.ts +0 -68
  41. package/dist/sql_gen/select/chain_select.d.ts +0 -28
  42. package/dist/sql_gen/select/query_chain_insert.d.ts +0 -24
  43. package/dist/sql_gen/select/query_chain_insert.js +0 -85
  44. package/dist/sql_gen/select/query_chain_select.d.ts +0 -49
  45. package/dist/sql_gen/select/query_chain_select.js +0 -105
  46. package/dist/sql_gen/select/type.d.ts +0 -40
  47. /package/dist/sql_gen/{select → statement}/cte.d.ts +0 -0
  48. /package/dist/sql_gen/{select → statement}/cte.js +0 -0
@@ -1,24 +0,0 @@
1
- import { ConditionParam, Constructable, SelectParam } from "../util.ts";
2
- import { SqlStatementDataset, SqlStatement } from "./chain_base.ts";
3
- import { ChainAfterConflictDo, ChainModifyReturning, ChainInsert, ChainDelete, ChainUpdate } from "./chain_modify.ts";
4
- import { TableType } from "./type.ts";
5
- export declare class SqlChainModify<T extends TableType = {}> extends SqlStatement implements ChainInsert<T>, ChainUpdate<T>, ChainDelete<T> {
6
- readonly sql: string;
7
- constructor(sql: string);
8
- from(...from: Constructable<string>[]): SqlChainModify<T>;
9
- using(...from: Constructable<string>[]): SqlChainModify<T>;
10
- returning<R extends {}>(returns: Constructable<SelectParam | "*">): SqlStatementDataset<R>;
11
- onConflict(onConflict: Constructable<readonly string[] | string>): ChainAfterConflictDo<T>;
12
- where(where: Constructable<ConditionParam | void>): ChainModifyReturning<T>;
13
- genSql(): string;
14
- }
15
- export declare class SqlInsertConflictBranch<T extends TableType = {}> implements ChainAfterConflictDo<T> {
16
- readonly sql: string;
17
- constructor(sql: string);
18
- doUpdate(set?: Constructable<string | {
19
- [key: string]: string | undefined;
20
- }>): ChainModifyReturning<T>;
21
- doNotThing(): ChainModifyReturning<T>;
22
- toString(): string;
23
- }
24
- //# sourceMappingURL=query_chain_insert.d.ts.map
@@ -1,85 +0,0 @@
1
- import { selectColumns, where } from '../util.js';
2
- import { createUpdateSetFromObject } from './_statement.js';
3
- import { SqlStatement, SqlTextStatementDataset } from './chain_base.js';
4
-
5
- class SqlChainModify extends SqlStatement {
6
- sql;
7
- constructor(sql) {
8
- super();
9
- this.sql = sql;
10
- }
11
- from(...from) {
12
- const textList = from.map((f, i) => {
13
- if (typeof f === "function")
14
- return f();
15
- return f;
16
- });
17
- const sql = this.genSql() + `\nFROM ${textList.join(", ")}`;
18
- return new SqlChainModify(sql);
19
- }
20
- using(...from) {
21
- const textList = from.map((f, i) => {
22
- if (typeof f === "function")
23
- return f();
24
- return f;
25
- });
26
- const sql = this.genSql() + `\nUSING ${textList.join(", ")}`;
27
- return new SqlChainModify(sql);
28
- }
29
- returning(returns) {
30
- if (typeof returns === "function")
31
- returns = returns();
32
- let columnsStr;
33
- if (returns === "*") {
34
- columnsStr = "*";
35
- }
36
- else {
37
- columnsStr = selectColumns(returns);
38
- }
39
- let sql = this.genSql() + "\nRETURNING " + columnsStr;
40
- return new SqlTextStatementDataset(sql);
41
- }
42
- onConflict(onConflict) {
43
- if (typeof onConflict === "function")
44
- onConflict = onConflict();
45
- if (typeof onConflict !== "string")
46
- onConflict = onConflict.join(",");
47
- let sql = this.genSql() + `\nON CONFLICT (${onConflict})`;
48
- return new SqlInsertConflictBranch(sql);
49
- }
50
- where(where$1) {
51
- const sql = where(where$1);
52
- return new SqlChainModify(this.genSql() + sql);
53
- }
54
- genSql() {
55
- return this.sql;
56
- }
57
- }
58
- class SqlInsertConflictBranch {
59
- sql;
60
- constructor(sql) {
61
- this.sql = sql;
62
- }
63
- doUpdate(set) {
64
- if (typeof set === "function")
65
- set = set();
66
- let sql = this.sql;
67
- if (typeof set === "object") {
68
- sql += "\nDO UPDATE ";
69
- sql += createUpdateSetFromObject(set);
70
- }
71
- else if (set)
72
- sql += "DO UPDATE\n" + set;
73
- else
74
- sql += "DO NOTHING";
75
- return new SqlChainModify(sql);
76
- }
77
- doNotThing() {
78
- return new SqlChainModify(this.sql + " DO NOTHING");
79
- }
80
- toString() {
81
- return this.sql;
82
- }
83
- }
84
-
85
- export { SqlChainModify, SqlInsertConflictBranch };
@@ -1,49 +0,0 @@
1
- import { SqlSelectable, SqlTextStatementDataset } from "./chain_base.ts";
2
- import { ChainSelect, ChainSelectAfterHaving, ChainSelectAfterLimit, ChainSelectAfterOrderBy, ChainSelectAfterGroupBy, ChainSelectAfterWhere } from "./chain_select.ts";
3
- import { OrderByParam, ConditionParam, SelectParam, Constructable } from "../util.ts";
4
- import type { TableType } from "./type.ts";
5
- /**
6
- * @public ChainSelectWhere 的默认实现
7
- */
8
- export declare class SqlSelectChain<T extends TableType> extends SqlTextStatementDataset<T> implements ChainSelect<T> {
9
- where(param?: Constructable<ConditionParam | void>): ChainSelectAfterWhere<T>;
10
- groupBy(columns: string | string[]): ChainSelectAfterGroupBy<T>;
11
- having(param?: Constructable<ConditionParam | void>): ChainSelectAfterHaving<T>;
12
- orderBy(param?: Constructable<OrderByParam | void>): ChainSelectAfterOrderBy<T>;
13
- limit(limit?: number, offset?: number): ChainSelectAfterLimit<T>;
14
- }
15
- /** @public */
16
- export declare class Selection {
17
- #private;
18
- static from(selectable: Constructable<SqlSelectable | string>, as?: string): Selection;
19
- constructor(selectable: Constructable<SqlSelectable | string>, as?: string);
20
- toString(): string;
21
- fullJoin(selectable: Constructable<SqlSelectable | string>, as: string | undefined, on: Constructable<ConditionParam>): Selection;
22
- innerJoin(selectable: Constructable<SqlSelectable | string>, as: string | undefined, on: Constructable<ConditionParam>): Selection;
23
- leftJoin(selectable: Constructable<SqlSelectable | string>, as: string | undefined, on: Constructable<ConditionParam>): Selection;
24
- rightJoin(selectable: Constructable<SqlSelectable | string>, as: string | undefined, on: Constructable<ConditionParam>): Selection;
25
- naturalJoin(selectable: Constructable<SqlSelectable | string>, as?: string | undefined): Selection;
26
- crossJoin(selectable: Constructable<SqlSelectable | string>, as?: string | undefined): Selection;
27
- from(selectable: Constructable<SqlSelectable | string>, as?: string): Selection;
28
- /** 选择全部列 */
29
- select<T extends TableType = Record<string, any>>(columns: "*"): ChainSelect<T>;
30
- /**
31
- * 自定义SQL选择语句
32
- * @example
33
- * ```ts
34
- * selection.select("t.age, count(*) AS c") // SELECT t.age,count(*) AS c FROM ...
35
- * ```
36
- */
37
- select(columns: Constructable<SelectParam>): ChainSelect<Record<string, any>>;
38
- /**
39
- * 通过 object 选择 列
40
- * @example
41
- * ```ts
42
- * selection.select({"age":true, c:"count(*)"}) // SELECT age,count(*) AS c FROM ...
43
- * ```
44
- */
45
- select<T extends TableType>(columns: Constructable<{
46
- [key in keyof T]: string | boolean;
47
- } | string>): ChainSelect<T>;
48
- }
49
- //# sourceMappingURL=query_chain_select.d.ts.map
@@ -1,105 +0,0 @@
1
- import { SqlTextStatementDataset } from './chain_base.js';
2
- import { where, having, orderBy, selectColumns } from '../util.js';
3
- import { condition } from './_statement.js';
4
-
5
- var _a;
6
- /**
7
- * @public ChainSelectWhere 的默认实现
8
- */
9
- class SqlSelectChain extends SqlTextStatementDataset {
10
- where(param) {
11
- return new SqlSelectChain(this.genSql() + where(param));
12
- }
13
- groupBy(columns) {
14
- let sql = this.genSql();
15
- if (typeof columns === "string")
16
- sql += " GROUP BY " + columns;
17
- else
18
- sql += " GROUP BY " + columns.join(",");
19
- return new SqlSelectChain(sql);
20
- }
21
- having(param) {
22
- return new SqlSelectChain(this.genSql() + having(param));
23
- }
24
- orderBy(param) {
25
- return new SqlSelectChain(this.genSql() + orderBy(param));
26
- }
27
- limit(limit, offset) {
28
- let sql = this.genSql();
29
- let type;
30
- if (limit) {
31
- type = typeof limit;
32
- if (type === "number" || type === "bigint")
33
- sql += "\nLIMIT " + limit;
34
- else
35
- throw new TypeError("limit 必须是个整数:" + limit);
36
- }
37
- if (offset) {
38
- type = typeof offset;
39
- if (type === "number" || type === "bigint")
40
- sql += "\nOFFSET " + offset;
41
- else
42
- throw new TypeError("offset 必须是个整数:" + limit);
43
- }
44
- return new SqlTextStatementDataset(sql);
45
- }
46
- }
47
- function fromAs(selectable, as) {
48
- if (typeof selectable === "function")
49
- selectable = selectable();
50
- let sql = typeof selectable === "string" ? selectable : selectable.toSelect();
51
- if (as)
52
- sql += " AS " + as;
53
- return sql;
54
- }
55
- /** @public */
56
- class Selection {
57
- static from(selectable, as) {
58
- return new this(selectable, as);
59
- }
60
- #sql;
61
- constructor(selectable, as) {
62
- this.#sql = fromAs(selectable, as);
63
- }
64
- toString() {
65
- return "FROM " + this.#sql;
66
- }
67
- #join(type, selectable, as, on) {
68
- let sql = this.#sql + "\n" + type + " " + fromAs(selectable, as);
69
- if (on) {
70
- sql += " ON " + condition(on);
71
- }
72
- return new _a(sql);
73
- }
74
- fullJoin(selectable, as, on) {
75
- return this.#join("FULL JOIN", selectable, as, on);
76
- }
77
- innerJoin(selectable, as, on) {
78
- return this.#join("INNER JOIN", selectable, as, on);
79
- }
80
- leftJoin(selectable, as, on) {
81
- return this.#join("LEFT JOIN", selectable, as, on);
82
- }
83
- rightJoin(selectable, as, on) {
84
- return this.#join("RIGHT JOIN", selectable, as, on);
85
- }
86
- naturalJoin(selectable, as) {
87
- return this.#join("NATURAL JOIN", selectable, as);
88
- }
89
- crossJoin(selectable, as) {
90
- return this.#join("CROSS JOIN", selectable, as);
91
- }
92
- from(selectable, as) {
93
- return new _a(this.#sql + "," + fromAs(selectable, as));
94
- }
95
- select(columnsIn) {
96
- if (typeof columnsIn === "function")
97
- columnsIn = columnsIn();
98
- let sql = "SELECT " + selectColumns(columnsIn);
99
- sql += "\n" + this.toString();
100
- return new SqlSelectChain(sql);
101
- }
102
- }
103
- _a = Selection;
104
-
105
- export { Selection, SqlSelectChain };
@@ -1,40 +0,0 @@
1
- /**
2
- * @deprecated 已废弃,改用 ToInsertType
3
- * @public
4
- * @param T - 表格查询类型
5
- * @param Rq - 默认选择
6
- * @param Pa - 可选选择
7
- */
8
- export type PickColumn<T extends {
9
- [key: string]: any;
10
- }, Rq extends keyof T = keyof T, Pa extends Exclude<keyof T, Rq> = never> = {
11
- [key in Rq as null extends T[key] ? key : never]?: T[key];
12
- } & {
13
- [key in Rq as null extends T[key] ? never : key]: T[key];
14
- } & {
15
- [key in Pa]?: T[key];
16
- };
17
- /**
18
- * 推断表插入类型
19
- * @public
20
- * @param T - 表格创建类型
21
- * @param Pa - 可选列
22
- */
23
- export type ToInsertType<T extends {
24
- [key: string]: any;
25
- }, Pa extends keyof T = never> = {
26
- [key in keyof T as key extends Pa ? never : null extends T[key] ? never : key]: T[key];
27
- } & {
28
- [key in keyof T as null extends T[key] ? key : key extends Pa ? key : never]?: T[key];
29
- };
30
- /** @public */
31
- export type UpdateRowValue<T extends object> = {
32
- [key in keyof T]?: T[key] | String;
33
- };
34
- /** @public */
35
- export type OrderValue = "ASC" | "DESC";
36
- /** @public */
37
- export type TableType = {
38
- [key: string]: any;
39
- };
40
- //# sourceMappingURL=type.d.ts.map
File without changes
File without changes