· 5 years ago · Mar 13, 2020, 04:04 PM
1
2'use strict'
3
4var sqlite = require('sqlite3').verbose();
5var db = new sqlite.Database('test_db');
6
7db.getAsync = function (sql) {
8 var that = this;
9 return new Promise(function (resolve, reject) {
10 that.get(sql, function (err, row) {
11 if (err)
12 reject(err);
13 else
14 resolve(row);
15 });
16 });
17};
18
19db.allAsync = function (sql) {
20 var that = this;
21 return new Promise(function (resolve, reject) {
22 that.all(sql, function (err, rows) {
23 if (err)
24 reject(err);
25 else
26 resolve(rows);
27 });
28 });
29};
30
31db.runAsync = function (sql) {
32 var that = this;
33 return new Promise(function (resolve, reject) {
34 that.run(sql, function(err) {
35 if (err)
36 reject(err);
37 else
38 resolve();
39 });
40 })
41};
42
43async function voteAsync(voter) {
44 var val;
45 var getStmt = `SELECT Name, Count FROM Voters WHERE Name="${voter}"`;
46 console.log(getStmt);
47 var row = await db.getAsync(getStmt);
48 if (!row) {
49 console.log("VOTER NOT FOUND");
50 var insertSql = `INSERT INTO Voters (Name, Count) VALUES ("${voter}", 1)`;
51 console.log(insertSql);
52 await db.runAsync(insertSql);
53 val = 1;
54 return;
55 }
56 else {
57 val = row["Count"];
58 console.log(`COUNT = ${val}`);
59 val += 1;
60
61 // update
62 var updateSql = `UPDATE Voters SET Count = ${val} WHERE Name = "${voter}"`;
63 console.log(updateSql);
64 await db.runAsync(updateSql);
65 }
66
67 console.log(`RETURN ${val}`);
68 return val;
69}
70
71console.log('sqlite3...');
72async function main() {
73 try {
74 var stmt = "CREATE TABLE IF NOT EXISTS Voters (Name TEXT, Count int)";
75 console.log(stmt);
76 await db.runAsync(stmt);
77 var val = await voteAsync("john doe");
78 console.log(`New vote for John Doe is ${val}`);
79 }
80 catch (e) {
81 console.log(JSON.stringify(ex));
82 }
83}
84
85main()