ed71803bde8816214dd190e7415ad309771d58fe
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

1) // import {int} from './types';
2) 
3) 
4) namespace helpers.database
5) {
6) 	
7) 	/**
8) 	 */
9) 	type type_query = {
10) 		sql_template : string;
11) 		arguments : {[name : string] : any};
12) 	};
13) 	
14) 	
15) 	/**
16) 	 */
17) 	function resolve_path
18) 	(
19) 		path_raw : string
20) 	) : string
21) 	{
22) 		return ("sql/" + path_raw.replace(new RegExp("\\.", "g"), "/") + ".sql");
23) 	}
24) 	
25) 	
26) 	/**
27) 	 */
28) 	function fix_query
29) 	(
30) 		query : type_query,
31) 	) : type_query
32) 	{
33) 		return {
34) 			"sql_template": query.sql_template.replace
35) 			(
36) 				new RegExp(":([0-9a-zA-Z_-]+)", "g"),
37) 				"$$$1"
38) 			),
39) 			"arguments": (
40) 				() =>
41) 				{
42) 					let arguments_ : {[name : string] : any} = {};
43) 					Object.keys(query.arguments).forEach
44) 					(
45) 						(name) => {arguments_["$" + name] = query.arguments[name];}
46) 					);
47) 					return arguments_;
48) 				}
49) 			) (),
50) 		};
51) 	}
52) 	
53) 	
54) 	/**
55) 	 */
56) 	function query_do_free_
57) 	(
58) 		query : type_query
59) 	) : Promise<void>
60) 	{
61) 		const nm_sqlite3 = require("sqlite3");
62) 		const query_fixed : type_query = fix_query(query);
63) 		// console.info("---\n" + query_fixed.sql_template + "\n" + JSON.stringify(query_fixed.arguments) + "\n---\n");
64) 		return (
65) 			new Promise<void>
66) 			(
67) 				(resolve, reject) =>
68) 				{
Christian Fraß [mod] helpers:database

Christian Fraß authored 3 years ago

69) 					const database/* : nm_sqlite3.Database*/ = new nm_sqlite3.Database("data.sqlite");
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

70) 					database.run
71) 					(
72) 						query_fixed.sql_template,
73) 						query_fixed.arguments,
74) 						function (error)
75) 						{
76) 							if (error)
77) 							{
78) 								reject(error);
79) 							}
80) 							else
81) 							{
82) 								resolve(undefined);
83) 							}
84) 						}
85) 					);
86) 					database.close();
87) 				}
88) 			)
89) 		);
90) 	}
91) 	
92) 	
93) 	/**
94) 	 */
95) 	function query_get_free_
96) 	(
97) 		query : type_query
98) 	) : Promise<Array<type_row>>
99) 	{
100) 		const nm_sqlite3 = require("sqlite3");
101) 		const query_fixed : type_query = fix_query(query);
102) 		// console.info("---\n" + query_fixed.sql_template + "\n" + JSON.stringify(query_fixed.arguments) + "\n---\n");
103) 		return (
104) 			new Promise<Array<type_row>>
105) 			(
106) 				(resolve, reject) =>
107) 				{
Christian Fraß [mod] helpers:database

Christian Fraß authored 3 years ago

108) 					const database/* : nm_sqlite3.Database*/ = new nm_sqlite3.Database("data.sqlite");
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

109) 					database.all
110) 					(
111) 						query_fixed.sql_template,
112) 						query_fixed.arguments,
113) 						function (error, rows)
114) 						{
115) 							// console.info({error,rows});
116) 							if (error)
117) 							{
118) 								reject(error);
119) 							}
120) 							else
121) 							{
122) 								resolve(rows);
123) 							}
124) 						}
125) 					);
126) 					database.close();
127) 				}
128) 			)
129) 		);
130) 	}
131) 	
132) 		
133) 	/**
134) 	 */
135) 	function query_put_free_
136) 	(
137) 		query : type_query
138) 	) : Promise<int>
139) 	{
140) 		const nm_sqlite3 = require("sqlite3");
141) 		const query_fixed : type_query = fix_query(query);
142) 		// console.info("---\n" + query_fixed.sql_template + "\n" + JSON.stringify(query_fixed.arguments) + "\n---\n");
143) 		return (
144) 			new Promise<int>
145) 			(
146) 				(resolve, reject) =>
147) 				{
Christian Fraß [mod] helpers:database

Christian Fraß authored 3 years ago

148) 					const database/* : nm_sqlite3.Database*/ = new nm_sqlite3.Database("data.sqlite");