baja-lite 1.1.2 → 1.1.4

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 (77) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc.cjs +89 -0
  3. package/.prettierrc +4 -0
  4. package/ci.js +29 -0
  5. package/package-cjs.json +17 -0
  6. package/package.json +7 -7
  7. package/{boot-remote.js → src/boot-remote.ts} +7 -6
  8. package/{boot.js → src/boot.ts} +39 -32
  9. package/{code.js → src/code.ts} +67 -64
  10. package/{convert-xml.js → src/convert-xml.ts} +155 -105
  11. package/src/enum.ts +71 -0
  12. package/src/error.ts +11 -0
  13. package/src/fn.ts +295 -0
  14. package/{index.d.ts → src/index.ts} +11 -11
  15. package/{list.js → src/list.ts} +9 -8
  16. package/src/math.ts +405 -0
  17. package/src/object.ts +247 -0
  18. package/src/set-ex.ts +374 -0
  19. package/src/sql.ts +5281 -0
  20. package/{sqlite.js → src/sqlite.ts} +52 -53
  21. package/src/string.ts +111 -0
  22. package/{test-mysql.js → src/test-mysql.ts} +126 -135
  23. package/src/test-postgresql.ts +79 -0
  24. package/{test-sqlite.js → src/test-sqlite.ts} +80 -89
  25. package/{test-xml.js → src/test-xml.ts} +1 -1
  26. package/src/test.ts +2 -0
  27. package/src/wx/base.ts +76 -0
  28. package/src/wx/mini.ts +133 -0
  29. package/src/wx/organ.ts +290 -0
  30. package/{wx/types.d.ts → src/wx/types.ts} +10 -21
  31. package/src/wx.ts +3 -0
  32. package/test.json +0 -0
  33. package/tsconfig.base.json +80 -0
  34. package/tsconfig.cjs.json +42 -0
  35. package/tsconfig.json +44 -0
  36. package/xml/event-report.xml +13 -0
  37. package/yarn.lock +1493 -0
  38. package/boot-remote.d.ts +0 -2
  39. package/boot.d.ts +0 -2
  40. package/code.d.ts +0 -2
  41. package/convert-xml.d.ts +0 -10
  42. package/enum.d.ts +0 -18
  43. package/enum.js +0 -59
  44. package/error.d.ts +0 -5
  45. package/error.js +0 -13
  46. package/fn.d.ts +0 -128
  47. package/fn.js +0 -172
  48. package/index.js +0 -11
  49. package/list.d.ts +0 -10
  50. package/math.d.ts +0 -83
  51. package/math.js +0 -451
  52. package/object.d.ts +0 -83
  53. package/object.js +0 -222
  54. package/set-ex.d.ts +0 -198
  55. package/set-ex.js +0 -338
  56. package/sql.d.ts +0 -1858
  57. package/sql.js +0 -5025
  58. package/sqlite.d.ts +0 -32
  59. package/string.d.ts +0 -17
  60. package/string.js +0 -105
  61. package/test-mysql.d.ts +0 -2
  62. package/test-postgresql.d.ts +0 -2
  63. package/test-postgresql.js +0 -90
  64. package/test-sqlite.d.ts +0 -1
  65. package/test-xml.d.ts +0 -1
  66. package/test.d.ts +0 -1
  67. package/test.js +0 -2
  68. package/wx/base.d.ts +0 -11
  69. package/wx/base.js +0 -78
  70. package/wx/index.d.ts +0 -3
  71. package/wx/index.js +0 -3
  72. package/wx/mini.d.ts +0 -45
  73. package/wx/mini.js +0 -102
  74. package/wx/organ.d.ts +0 -65
  75. package/wx/organ.js +0 -171
  76. package/wx/types.js +0 -1
  77. /package/{README.md → Readme.md} +0 -0
@@ -1,20 +1,34 @@
1
- import { extensionCodec, logger } from './sql.js';
1
+ import { SqliteRemoteInterface, extensionCodec, logger } from './sql.js';
2
2
  import Sqlstring from 'sqlstring';
3
3
  import { encode, decode } from "@msgpack/msgpack";
4
- export class SqliteRemoteClass {
5
- constructor() {
6
- this.dbList = {};
7
- }
8
- async execute(inData) {
9
- const [dbName, sql, params] = decode(inData);
4
+ export abstract class SqliteRemoteClass implements SqliteRemoteInterface {
5
+ private dbList: Record<string, any> = {};
6
+ /** 原始存放路径 */
7
+ abstract getStoreName(dbName: string): string;
8
+ /** 导入时,备份源文件路径 */
9
+ abstract getBackName(dbName: string): string;
10
+ abstract BetterSqlite3: any;
11
+
12
+
13
+ /** 实现复制 */
14
+ abstract cpSync(from: string, to: string, option?: { force: true }): void;
15
+ /**
16
+ * 设置可执行权限
17
+ ```
18
+ const fd = openSync(dbPath, 1);
19
+ fchmodSync(fd, 777);
20
+ closeSync(fd);
21
+ ```
22
+ */
23
+ abstract setMod(name: string): void;
24
+ abstract trace: boolean;
25
+ async execute(inData: Uint8Array): Promise<Uint8Array> {
26
+ const [dbName, sql, params] = decode(inData) as [dbName: string, sql?: string | undefined, params?: any];
10
27
  logger.debug(sql, params ?? '');
11
28
  try {
12
- if (!sql) {
13
- return encode({ affectedRows: 0, insertId: 0n }, { extensionCodec });
14
- }
15
- ;
29
+ if (!sql) { return encode({ affectedRows: 0, insertId: 0n }, { extensionCodec }); };
16
30
  if (this.trace) {
17
- logger.trace(Sqlstring.format(sql, params));
31
+ logger.trace(Sqlstring.format(sql!, params));
18
32
  }
19
33
  const result = this.dbList[dbName].prepare(sql).run(params ?? {});
20
34
  if (this.trace) {
@@ -22,8 +36,7 @@ export class SqliteRemoteClass {
22
36
  }
23
37
  const { changes, lastInsertRowid } = result;
24
38
  return encode({ affectedRows: changes, insertId: lastInsertRowid ? BigInt(lastInsertRowid) : 0n }, { extensionCodec });
25
- }
26
- catch (error) {
39
+ } catch (error) {
27
40
  logger.error(`
28
41
  error: ${error},
29
42
  sql: ${sql},
@@ -32,21 +45,17 @@ export class SqliteRemoteClass {
32
45
  throw error;
33
46
  }
34
47
  }
35
- async pluck(inData) {
36
- const [dbName, sql, params] = decode(inData);
48
+ async pluck(inData: Uint8Array): Promise<Uint8Array> {
49
+ const [dbName, sql, params] = decode(inData) as [dbName: string, sql?: string | undefined, params?: any];
37
50
  logger.debug(sql, params ?? '');
38
51
  try {
39
52
  logger.debug(sql, params ?? '');
40
- if (!sql) {
41
- return encode(null);
42
- }
43
- ;
53
+ if (!sql) { return encode(null) };
44
54
  if (this.trace) {
45
- logger.trace(Sqlstring.format(sql, params));
55
+ logger.trace(Sqlstring.format(sql!, params));
46
56
  }
47
57
  return encode(this.dbList[dbName].prepare(sql).pluck().get(params ?? {}), { extensionCodec });
48
- }
49
- catch (error) {
58
+ } catch (error) {
50
59
  logger.error(`
51
60
  error: ${error},
52
61
  sql: ${sql},
@@ -55,16 +64,15 @@ export class SqliteRemoteClass {
55
64
  throw error;
56
65
  }
57
66
  }
58
- async get(inData) {
59
- const [dbName, sql, params] = decode(inData);
67
+ async get(inData: Uint8Array): Promise<Uint8Array> {
68
+ const [dbName, sql, params] = decode(inData) as [dbName: string, sql?: string | undefined, params?: any];
60
69
  logger.debug(sql, params ?? '');
61
70
  try {
62
71
  if (this.trace) {
63
- logger.trace(Sqlstring.format(sql, params));
72
+ logger.trace(Sqlstring.format(sql!, params));
64
73
  }
65
74
  return encode(this.dbList[dbName].prepare(sql).get(params ?? {}), { extensionCodec });
66
- }
67
- catch (error) {
75
+ } catch (error) {
68
76
  logger.error(`
69
77
  error: ${error},
70
78
  sql: ${sql},
@@ -73,20 +81,16 @@ export class SqliteRemoteClass {
73
81
  throw error;
74
82
  }
75
83
  }
76
- async raw(inData) {
77
- const [dbName, sql, params] = decode(inData);
84
+ async raw(inData: Uint8Array): Promise<Uint8Array> {
85
+ const [dbName, sql, params] = decode(inData) as [dbName: string, sql?: string | undefined, params?: any];
78
86
  logger.debug(sql, params ?? '');
79
87
  try {
80
- if (!sql) {
81
- return encode([]);
82
- }
83
- ;
88
+ if (!sql) { return encode([]); };
84
89
  if (this.trace) {
85
- logger.trace(Sqlstring.format(sql, params));
90
+ logger.trace(Sqlstring.format(sql!, params));
86
91
  }
87
92
  return encode(this.dbList[dbName].prepare(sql).raw().all(params ?? {}), { extensionCodec });
88
- }
89
- catch (error) {
93
+ } catch (error) {
90
94
  logger.error(`
91
95
  error: ${error},
92
96
  sql: ${sql},
@@ -95,20 +99,16 @@ export class SqliteRemoteClass {
95
99
  throw error;
96
100
  }
97
101
  }
98
- async query(inData) {
99
- const [dbName, sql, params] = decode(inData);
102
+ async query(inData: Uint8Array): Promise<Uint8Array> {
103
+ const [dbName, sql, params] = decode(inData) as [dbName: string, sql?: string | undefined, params?: any];
100
104
  logger.debug(sql, params ?? '');
101
105
  try {
102
- if (!sql) {
103
- encode([]);
104
- }
105
- ;
106
+ if (!sql) { encode([]); };
106
107
  if (this.trace) {
107
- logger.trace(Sqlstring.format(sql, params));
108
+ logger.trace(Sqlstring.format(sql!, params));
108
109
  }
109
110
  return encode(this.dbList[dbName].prepare(sql).all(params ?? {}), { extensionCodec });
110
- }
111
- catch (error) {
111
+ } catch (error) {
112
112
  logger.error(`
113
113
  error: ${error},
114
114
  sql: ${sql},
@@ -117,7 +117,7 @@ export class SqliteRemoteClass {
117
117
  throw error;
118
118
  }
119
119
  }
120
- initDB(dbName) {
120
+ initDB(dbName: string) {
121
121
  if (!this.dbList[dbName]) {
122
122
  this.dbList[dbName] = new this.BetterSqlite3(this.getStoreName(dbName), { fileMustExist: false });
123
123
  this.dbList[dbName].pragma('journal_mode = WAL');
@@ -133,10 +133,10 @@ export class SqliteRemoteClass {
133
133
  `);
134
134
  }
135
135
  }
136
- async export(dbName, exportPath) {
136
+ async export(dbName: string, exportPath: string): Promise<void> {
137
137
  await this.dbList[dbName].backup(exportPath);
138
138
  }
139
- restore(dbName, importPath) {
139
+ restore(dbName: string, importPath: string) {
140
140
  if (this.dbList[dbName]) {
141
141
  this.dbList[dbName].close();
142
142
  this.dbList[dbName] = null;
@@ -147,16 +147,15 @@ export class SqliteRemoteClass {
147
147
  this.setMod(nn);
148
148
  this.initDB(dbName);
149
149
  }
150
- close(dbName) {
150
+ close(dbName?: string) {
151
151
  if (dbName) {
152
152
  this.dbList[dbName]?.close();
153
153
  this.dbList[dbName] = null;
154
- }
155
- else {
154
+ } else {
156
155
  for (const db of Object.values(this.dbList)) {
157
156
  db.close();
158
157
  }
159
158
  this.dbList = {};
160
159
  }
161
160
  }
162
- }
161
+ }
package/src/string.ts ADDED
@@ -0,0 +1,111 @@
1
+ /**
2
+ * 通过uri获取key
3
+ * @param uri
4
+ */
5
+ export const getPicKey = (uri: string): string => {
6
+ const arr = /key=([0-9a-zA-Z.]+)/.exec(uri);
7
+ if (arr && arr.length === 2) {
8
+ return arr[1]!;
9
+ }
10
+ return uri;
11
+ };
12
+
13
+ export const emptyString = (source: any, skipEmptyString = true): boolean => {
14
+ return (
15
+ source === null ||
16
+ source === undefined ||
17
+ (skipEmptyString === true && (source === '' || `${ source }`.replace(/\s/g, '') === ''))
18
+ );
19
+ };
20
+
21
+ export const notEmptyString = (source: any, skipEmptyString = true): boolean => {
22
+ return emptyString(source, skipEmptyString) === false;
23
+ };
24
+
25
+ export const safeString = (source?: string): string => {
26
+ if (source) {
27
+ return `${ source }`.replace(/'/g, '');
28
+ }
29
+ return '';
30
+ };
31
+ export const trimObject = <T>(data: any): T => {
32
+ if (data) {
33
+ for (const k in data) {
34
+ if (typeof data[k] === 'string') {
35
+ data[k] = data[k].trim();
36
+ }
37
+ }
38
+ }
39
+ return data;
40
+ };
41
+
42
+ export const randomNumber = (len: number): string => {
43
+ return `${ parseInt(`${ (Math.random() * 9 + 1) * Math.pow(10, (len - 1)) }`, 10) }`;
44
+ };
45
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
46
+ const charLen = chars.length;
47
+ export const randomString = (len: number): string => {
48
+ return Array.from(new Array(len)).map(() => chars.charAt(Math.floor(Math.random() * charLen))).join('');
49
+ };
50
+ const chars2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
51
+ const charLen2 = chars2.length;
52
+ export const randomString2 = (len: number): string => {
53
+ return Array.from(new Array(len)).map(() => chars2.charAt(Math.floor(Math.random() * charLen2))).join('');
54
+ };
55
+ const chars3 = 'abcdefghijklmnopqrstuvwxyz0123456789';
56
+ const charLen3 = chars3.length;
57
+ export const randomString3 = (len: number): string => {
58
+ return Array.from(new Array(len)).map(() => chars3.charAt(Math.floor(Math.random() * charLen3))).join('');
59
+ };
60
+ export const buildWxStr = (data: {[key: string]: string}, maxLabelLength: number, ...titles: string[]) => {
61
+ let str = titles.join('\r\n');
62
+ str += '\r\n\r\n';
63
+ const items = new Array<string>();
64
+ // const maxLength = maxLabelLength * 2;
65
+ for (const [key, value] of Object.entries(data)) {
66
+ if (notEmptyString(value)) {
67
+ const len = maxLabelLength - key.length;
68
+ items.push(`${ key }:${ ''.padEnd(len * 3 + (len > 0 ? 1 : 0), ' ') }${ value }`);
69
+ }
70
+ }
71
+ str += items.join('\r\n');
72
+ return str;
73
+ };
74
+ const chinese = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/g;
75
+ const table = {
76
+ '!': '!',
77
+ '¥': '$',
78
+ '…': '.',
79
+ '(': '(',
80
+ ')': ')',
81
+ '《': '<',
82
+ '》': '>',
83
+ '?': '?',
84
+ ':': ':',
85
+ '“': `'`,
86
+ '”': `'`,
87
+ '’': `'`,
88
+ '‘': `'`,
89
+ ',': ',',
90
+ '。': '.',
91
+ '、': '/',
92
+ ';': ';',
93
+ '〈': '<',
94
+ '〉': '>',
95
+ '【': '[',
96
+ '】': ']',
97
+ '『': '[',
98
+ '』': ']',
99
+ '「': '[',
100
+ '」': ']',
101
+ '﹃': '[',
102
+ '﹄': ']',
103
+ '〔': '(',
104
+ '〕': ')',
105
+ '—': '-',
106
+ '~': '~',
107
+ '﹏': '~'
108
+ };
109
+ export const replaceChineseCode = (str: string) => {
110
+ return str.replace(chinese, (a: string) => table[a] || '');
111
+ };
@@ -1,135 +1,126 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import 'reflect-metadata';
11
- import { Boot } from './boot.js';
12
- import { SqlService, Field, DB, DBType, SqlType, ColumnMode, SelectResult, } from './sql.js';
13
- class AmaFuck2 {
14
- }
15
- __decorate([
16
- Field({ type: SqlType.varchar, length: 200, id: true, uuid: true }),
17
- __metadata("design:type", String)
18
- ], AmaFuck2.prototype, "site", void 0);
19
- __decorate([
20
- Field({ type: SqlType.varchar, length: 200, def: '333' }),
21
- __metadata("design:type", String)
22
- ], AmaFuck2.prototype, "sellerSku2", void 0);
23
- __decorate([
24
- Field({ type: SqlType.varchar, length: 200 }),
25
- __metadata("design:type", String)
26
- ], AmaFuck2.prototype, "sellerSku", void 0);
27
- let AmaService2 = class AmaService2 extends SqlService {
28
- };
29
- AmaService2 = __decorate([
30
- DB({
31
- tableName: 'ama_fuck', clz: AmaFuck2, dbType: DBType.Mysql
32
- })
33
- ], AmaService2);
34
- // interface Menu {
35
- // resourceid: string;
36
- // resourcepid: string;
37
- // resourcename: string;
38
- // children: Menu[];
39
- // }
40
- export async function go2() {
41
- await Boot({
42
- Mysql: {
43
- host: '39.98.58.252',
44
- port: 3308,
45
- user: 'root',
46
- password: 'Eme!2#456$&*',
47
- // 数据库名
48
- database: 'dmce',
49
- debug: false
50
- },
51
- log: 'info',
52
- columnMode: ColumnMode.HUMP,
53
- sqlDir: 'E:/pro/baja-lite/xml',
54
- sqlMap: {
55
- ['test.test']: `SELECT * FROM cp_user {{#username}} WHERE username = :username {{/username}}`
56
- }
57
- });
58
- const service = new AmaService2();
59
- await service.transaction({
60
- fn: async (conn) => {
61
- // const list = new Array<AmaFuck2>({
62
- // sellerSku: 'SellerSKU1',
63
- // }, {
64
- // sellerSku: 'sellerSku1',
65
- // sellerSku2: 'SellerSKU11',
66
- // }, {
67
- // sellerSku2: 'SellerSKU2',
68
- // sellerSku: 'SellerSKU22',
69
- // }, {
70
- // sellerSku2: 'SellerSKU3',
71
- // sellerSku: 'SellerSKU33',
72
- // }, {
73
- // sellerSku2: '',
74
- // sellerSku: 'SellerSKU44',
75
- // site: '1234'
76
- // });
77
- // const rt = await service.insert({
78
- // data: list,
79
- // conn,
80
- // // skipEmptyString: false,
81
- // // skipUndefined: false
82
- // mode: InsertMode.InsertWithTempTable,
83
- // existConditionOtherThanIds: ['sellerSku']
84
- // });
85
- // console.log(11, rt);
86
- // const rt2 = await service.update({
87
- // data: {
88
- // sellerSku: 'SellerSKU1',
89
- // sellerSku2: 'SellerSKU21',
90
- // site: 'site1'
91
- // },
92
- // conn, skipEmptyString: false
93
- // });
94
- // console.log(22, rt2);
95
- // const rt3 = await service.delete({
96
- // where: [
97
- // { sellerSku2: 'SellerSKU23', sellerSku: 'SellerSKU3' }
98
- // ],
99
- // mode: DeleteMode.TempTable,
100
- // conn
101
- // });
102
- // console.log(33, rt3);
103
- // const rt4 = await service.template({
104
- // where: { sellerSku2: 'SellerSKU22', sellerSku: 'sellerSku2' },
105
- // templateResult: TemplateResult.Many
106
- // })
107
- // console.log(44, rt4);
108
- const rt5 = await service.select({
109
- sqlId: 'test.test',
110
- params: { username: '1111' },
111
- selectResult: SelectResult.RS_CS
112
- });
113
- console.log(55, rt5.length);
114
- // const rt6 = await service.stream().eq('sellerSku', 'SellerSKU1').excuteSelect({
115
- // selectResult: SelectResult.Many_Row_Many_Column,
116
- // });
117
- // console.log(66, rt6);
118
- return 1;
119
- }
120
- });
121
- // const data = await service.select<Menu>({
122
- // sql: 'SELECT resourceid, resourcepid,resourcename FROM cp_resource ',
123
- // params: {
124
- // site: '1234',
125
- // matchInfo: { reportType: 'yyyy', id: '11' }
126
- // },
127
- // // mapper: [
128
- // // ['site', ['info', 'bSist'], 989],
129
- // // ['site', ['info2', 'bSist'], 33],
130
- // // ['site', ['Bsite'], 0]
131
- // // ]
132
- // });
133
- // console.log(data);
134
- }
135
- go2();
1
+ import 'reflect-metadata';
2
+ import { Boot } from './boot.js';
3
+ import { SqlService, Field, DB, DBType, SqlType, ColumnMode, SelectResult, } from './sql.js';
4
+ class AmaFuck2 {
5
+ @Field({ type: SqlType.varchar, length: 200, id: true, uuid: true })
6
+ site?: string;
7
+ @Field({ type: SqlType.varchar, length: 200, def: '333' })
8
+ sellerSku2?: string;
9
+ @Field({ type: SqlType.varchar, length: 200 })
10
+ sellerSku?: string;
11
+ }
12
+
13
+ @DB({
14
+ tableName: 'ama_fuck', clz: AmaFuck2, dbType: DBType.Mysql
15
+ })
16
+ class AmaService2 extends SqlService<AmaFuck2>{
17
+
18
+ }
19
+
20
+ // interface Menu {
21
+ // resourceid: string;
22
+ // resourcepid: string;
23
+ // resourcename: string;
24
+ // children: Menu[];
25
+ // }
26
+
27
+ export async function go2() {
28
+ await Boot({
29
+ Mysql: {
30
+ host: '39.98.58.252',
31
+ port: 3308,
32
+ user: 'root',
33
+ password: 'Eme!2#456$&*',
34
+ // 数据库名
35
+ database: 'dmce',
36
+ debug: false
37
+ },
38
+ log: 'info',
39
+ columnMode: ColumnMode.HUMP,
40
+ sqlDir: 'E:/pro/baja-lite/xml',
41
+ sqlMap: {
42
+ ['test.test']: `SELECT * FROM cp_user {{#username}} WHERE username = :username {{/username}}`
43
+ }
44
+ });
45
+ const service = new AmaService2();
46
+ await service.transaction<number>({
47
+ fn: async conn => {
48
+ // const list = new Array<AmaFuck2>({
49
+ // sellerSku: 'SellerSKU1',
50
+ // }, {
51
+ // sellerSku: 'sellerSku1',
52
+ // sellerSku2: 'SellerSKU11',
53
+ // }, {
54
+ // sellerSku2: 'SellerSKU2',
55
+ // sellerSku: 'SellerSKU22',
56
+ // }, {
57
+ // sellerSku2: 'SellerSKU3',
58
+ // sellerSku: 'SellerSKU33',
59
+ // }, {
60
+ // sellerSku2: '',
61
+ // sellerSku: 'SellerSKU44',
62
+ // site: '1234'
63
+ // });
64
+ // const rt = await service.insert({
65
+ // data: list,
66
+ // conn,
67
+ // // skipEmptyString: false,
68
+ // // skipUndefined: false
69
+ // mode: InsertMode.InsertWithTempTable,
70
+ // existConditionOtherThanIds: ['sellerSku']
71
+ // });
72
+ // console.log(11, rt);
73
+ // const rt2 = await service.update({
74
+ // data: {
75
+ // sellerSku: 'SellerSKU1',
76
+ // sellerSku2: 'SellerSKU21',
77
+ // site: 'site1'
78
+ // },
79
+ // conn, skipEmptyString: false
80
+ // });
81
+ // console.log(22, rt2);
82
+ // const rt3 = await service.delete({
83
+ // where: [
84
+ // { sellerSku2: 'SellerSKU23', sellerSku: 'SellerSKU3' }
85
+ // ],
86
+ // mode: DeleteMode.TempTable,
87
+ // conn
88
+ // });
89
+ // console.log(33, rt3);
90
+ // const rt4 = await service.template({
91
+ // where: { sellerSku2: 'SellerSKU22', sellerSku: 'sellerSku2' },
92
+ // templateResult: TemplateResult.Many
93
+ // })
94
+ // console.log(44, rt4);
95
+
96
+ const rt5 = await service.select<{username:string}>({
97
+ sqlId: 'test.test',
98
+ params: { username: '1111' },
99
+ selectResult: SelectResult.RS_CS
100
+ })
101
+ console.log(55, rt5.length);
102
+ // const rt6 = await service.stream().eq('sellerSku', 'SellerSKU1').excuteSelect({
103
+ // selectResult: SelectResult.Many_Row_Many_Column,
104
+ // });
105
+ // console.log(66, rt6);
106
+
107
+ return 1;
108
+ }
109
+ });
110
+
111
+ // const data = await service.select<Menu>({
112
+ // sql: 'SELECT resourceid, resourcepid,resourcename FROM cp_resource ',
113
+ // params: {
114
+ // site: '1234',
115
+ // matchInfo: { reportType: 'yyyy', id: '11' }
116
+ // },
117
+ // // mapper: [
118
+ // // ['site', ['info', 'bSist'], 989],
119
+ // // ['site', ['info2', 'bSist'], 33],
120
+ // // ['site', ['Bsite'], 0]
121
+ // // ]
122
+ // });
123
+ // console.log(data);
124
+
125
+ }
126
+ go2();
@@ -0,0 +1,79 @@
1
+ import 'reflect-metadata';
2
+ import { Boot } from './boot.js';
3
+ import { SqlService, Field, DB, DBType, SqlType, ColumnMode, SelectResult, } from './sql.js';
4
+ class AmaFuck2 {
5
+ @Field({ type: SqlType.int, length: 200, id: true, uuid: true })
6
+ userid?: number;
7
+ @Field({ type: SqlType.varchar, length: 200, def: '333' })
8
+ username?: string;
9
+ @Field({ type: SqlType.varchar, length: 200 })
10
+ pwd?: string;
11
+ }
12
+
13
+ @DB({
14
+ tableName: 'nfc_user', clz: AmaFuck2, dbType: DBType.Postgresql
15
+ })
16
+ class AmaService2 extends SqlService<AmaFuck2>{
17
+
18
+ }
19
+
20
+ // interface Menu {
21
+ // resourceid: string;
22
+ // resourcepid: string;
23
+ // resourcename: string;
24
+ // children: Menu[];
25
+ // }
26
+
27
+ export async function go2() {
28
+ await Boot({
29
+ Postgresql: {
30
+ database: 'nfc',
31
+ user: 'postgres',
32
+ password: 'abcd1234',
33
+ port: 5432,
34
+ host: '127.0.0.1'
35
+ },
36
+ log: 'info',
37
+ columnMode: ColumnMode.HUMP,
38
+ sqlDir: 'E:/pro/baja-lite/xml',
39
+ sqlMap: {
40
+ ['test.test']: `SELECT * FROM nfc_user {{#username}} WHERE username = :username {{/username}}`
41
+ }
42
+ });
43
+ const service = new AmaService2();
44
+ await service.transaction<number>({
45
+ fn: async conn => {
46
+ const rt5 = await service.select<{username:string}>({
47
+ sqlId: 'test.test',
48
+ params: { username: '1111' },
49
+ selectResult: SelectResult.RS_CS,
50
+ conn
51
+ })
52
+ console.log(55, rt5.length);
53
+ await service.insert({
54
+ data:{
55
+ userid:22,
56
+ username:'222',
57
+ pwd: '333'
58
+ }
59
+ })
60
+ return 1;
61
+ }
62
+ });
63
+
64
+ // const data = await service.select<Menu>({
65
+ // sql: 'SELECT resourceid, resourcepid,resourcename FROM cp_resource ',
66
+ // params: {
67
+ // site: '1234',
68
+ // matchInfo: { reportType: 'yyyy', id: '11' }
69
+ // },
70
+ // // mapper: [
71
+ // // ['site', ['info', 'bSist'], 989],
72
+ // // ['site', ['info2', 'bSist'], 33],
73
+ // // ['site', ['Bsite'], 0]
74
+ // // ]
75
+ // });
76
+ // console.log(data);
77
+
78
+ }
79
+ go2();