]> Untitled Git - go.git/blob - socket/db.js
Added board state background (#1)
[go.git] / socket / db.js
1 const mariadb = require('mariadb');
2 const dsn = {
3     host: 'db', 
4     user: 'socket',
5     password: 'socketpw',
6     connectionLimit: 10
7 };
8 const pool = mariadb.createPool(dsn);
9
10 async function addMove(session_id, pos_x, pos_y, state) {
11     let conn;
12     try {
13         conn = await pool.getConnection();
14
15         var res = await conn.query(`
16 CREATE TABLE IF NOT EXISTS
17 go.state (
18     session_id INT UNSIGNED,
19     x TINYINT UNSIGNED,
20     y TINYINT UNSIGNED,
21     state ENUM('empty', 'white', 'black'),
22     updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
23         ON UPDATE CURRENT_TIMESTAMP,
24     PRIMARY KEY(session_id, x, y)
25 );
26         `);
27         res = await conn.query(`
28 INSERT INTO go.state (session_id, x, y, state)
29 values (?, ?, ?, ?)
30 ON DUPLICATE KEY UPDATE
31 state = VALUES(state);
32         `, [session_id, pos_x, pos_y, state]);
33         return res;
34     } catch (err) {
35         console.log(err);
36     } finally {
37         if (conn) conn.end();
38     }
39 }
40
41 async function getBoardState(session_id) {
42     let conn;
43     try {
44         conn = await pool.getConnection();
45         return await conn.query(`
46 SELECT x, y, state from go.state where session_id = ?
47         `, [session_id]);
48     } catch (err) {
49         console.log(err);
50     } finally {
51         if (conn) conn.end();
52     }
53 }
54
55 exports.pool = pool;
56 exports.addMove = addMove;
57 exports.getBoardState = getBoardState;