From 904ead585a034c47f6c1bbb3c30b1d9f6df0cc50 Mon Sep 17 00:00:00 2001 From: axbuglak Date: Sun, 3 Sep 2023 00:02:30 +0200 Subject: [PATCH 1/7] fix http not PUT req --- JavaScript/c-commonjs/static.js | 24 +----------------------- JavaScript/c-commonjs/static/client.js | 21 +++++++++++---------- JavaScript/c-commonjs/transport/http.js | 16 +++++++++------- JavaScript/c-commonjs/transport/ws.js | 4 ++-- 4 files changed, 23 insertions(+), 42 deletions(-) diff --git a/JavaScript/c-commonjs/static.js b/JavaScript/c-commonjs/static.js index 0a2b185..a2d8324 100644 --- a/JavaScript/c-commonjs/static.js +++ b/JavaScript/c-commonjs/static.js @@ -4,34 +4,12 @@ const http = require('node:http'); const path = require('node:path'); const fs = require('node:fs'); -const MIME_TYPES = { - html: 'text/html; charset=UTF-8', - json: 'application/json; charset=UTF-8', - js: 'application/javascript; charset=UTF-8', - css: 'text/css', - png: 'image/png', - ico: 'image/x-icon', - svg: 'image/svg+xml', -}; - -const HEADERS = { - 'X-XSS-Protection': '1; mode=block', - 'X-Content-Type-Options': 'nosniff', - 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload', - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS', - 'Access-Control-Allow-Headers': 'Content-Type', -}; - module.exports = (root, port, console) => { http.createServer(async (req, res) => { const url = req.url === '/' ? '/index.html' : req.url; const filePath = path.join(root, url); try { const data = await fs.promises.readFile(filePath); - const fileExt = path.extname(filePath).substring(1); - const mimeType = MIME_TYPES[fileExt] || MIME_TYPES.html; - res.writeHead(200, { ...HEADERS, 'Content-Type': mimeType }); res.end(data); } catch (err) { res.statusCode = 404; @@ -40,4 +18,4 @@ module.exports = (root, port, console) => { }).listen(port); console.log(`Static on port ${port}`); -}; +}; \ No newline at end of file diff --git a/JavaScript/c-commonjs/static/client.js b/JavaScript/c-commonjs/static/client.js index 35e400e..b5e08f1 100644 --- a/JavaScript/c-commonjs/static/client.js +++ b/JavaScript/c-commonjs/static/client.js @@ -2,7 +2,7 @@ const transport = {}; -transport.http = (url) => (structure) => { +transport.http = url => structure => { const api = {}; const services = Object.keys(structure); for (const name of services) { @@ -11,21 +11,22 @@ transport.http = (url) => (structure) => { const methods = Object.keys(service); for (const method of methods) { api[name][method] = (...args) => new Promise((resolve, reject) => { - fetch(`${url}/api/${name}/${method}`, { + fetch(`${url}/${name}/${method}/${args}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ args }), - }).then((res) => { + }).then(res => { if (res.status === 200) resolve(res.json()); else reject(new Error(`Status Code: ${res.status}`)); }); }); } } + console.log(api); return Promise.resolve(api); }; -transport.ws = (url) => (structure) => { +transport.ws = url => structure => { const socket = new WebSocket(url); const api = {}; const services = Object.keys(structure); @@ -34,28 +35,28 @@ transport.ws = (url) => (structure) => { const service = structure[name]; const methods = Object.keys(service); for (const method of methods) { - api[name][method] = (...args) => new Promise((resolve) => { + api[name][method] = (...args) => new Promise(resolve => { const packet = { name, method, args }; socket.send(JSON.stringify(packet)); - socket.onmessage = (event) => { + socket.onmessage = event => { const data = JSON.parse(event.data); resolve(data); }; }); } } - return new Promise((resolve) => { + return new Promise(resolve => { socket.addEventListener('open', () => resolve(api)); }); }; -const scaffold = (url) => { +const scaffold = url => { const protocol = url.startsWith('ws:') ? 'ws' : 'http'; return transport[protocol](url); }; (async () => { - const api = await scaffold('http://localhost:8001')({ + const api = await scaffold('ws://localhost:8001')({ user: { create: ['record'], read: ['id'], @@ -72,6 +73,6 @@ const scaffold = (url) => { say: ['message'], } }); - const data = await api.talks.say('hello'); + const data = await api.user.read(3); console.dir({ data }); })(); diff --git a/JavaScript/c-commonjs/transport/http.js b/JavaScript/c-commonjs/transport/http.js index e12b373..f17b8c1 100644 --- a/JavaScript/c-commonjs/transport/http.js +++ b/JavaScript/c-commonjs/transport/http.js @@ -12,7 +12,7 @@ const HEADERS = { 'Content-Type': 'application/json; charset=UTF-8', }; -const receiveArgs = async (req) => { +const receiveArgs = async req => { const buffers = []; for await (const chunk of req) buffers.push(chunk); const data = Buffer.concat(buffers).toString(); @@ -22,18 +22,20 @@ const receiveArgs = async (req) => { module.exports = (routing, port, console) => { http.createServer(async (req, res) => { res.writeHead(200, HEADERS); - if (req.method !== 'POST') return void res.end('"Not found"'); const { url, socket } = req; - const [place, name, method] = url.substring(1).split('/'); - if (place !== 'api') return void res.end('"Not found"'); + const [name, method, id] = url.substring(1).split('/'); const entity = routing[name]; if (!entity) return void res.end('"Not found"'); const handler = entity[method]; if (!handler) return void res.end('"Not found"'); - const { args } = await receiveArgs(req); + const src = handler.toString(); + const signature = src.substring(0, src.indexOf(')')); + const args = []; + if (signature.includes('(id')) args.push(id); + if (signature.includes('{')) args.push(await receiveArgs(req)); console.log(`${socket.remoteAddress} ${method} ${url}`); - const result = await handler(args); - res.end(JSON.stringify(result)); + const result = await handler(...args); + res.end(JSON.stringify(result.rows ? result.rows : result)); }).listen(port); console.log(`API on port ${port}`); diff --git a/JavaScript/c-commonjs/transport/ws.js b/JavaScript/c-commonjs/transport/ws.js index 708d24c..7d44556 100644 --- a/JavaScript/c-commonjs/transport/ws.js +++ b/JavaScript/c-commonjs/transport/ws.js @@ -7,7 +7,7 @@ module.exports = (routing, port, console) => { ws.on('connection', (connection, req) => { const ip = req.socket.remoteAddress; - connection.on('message', async (message) => { + connection.on('message', async message => { const obj = JSON.parse(message); const { name, method, args = [] } = obj; const entity = routing[name]; @@ -25,7 +25,7 @@ module.exports = (routing, port, console) => { console.log(`${ip} ${name}.${method}(${parameters})`); try { const result = await handler(...args); - connection.send(JSON.stringify(result), { binary: false }); + connection.send(JSON.stringify(result.rows ? result.rows : result), { binary: false }); } catch (err) { console.error(err); connection.send('"Server error"', { binary: false }); From 97db6a47563349ffd81b7b801002e3bee4d906d8 Mon Sep 17 00:00:00 2001 From: axbuglak Date: Sun, 3 Sep 2023 19:25:26 +0200 Subject: [PATCH 2/7] fix db --- JavaScript/c-commonjs/db.js | 6 +++--- JavaScript/c-commonjs/static/client.js | 5 ++--- JavaScript/c-commonjs/transport/http.js | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/JavaScript/c-commonjs/db.js b/JavaScript/c-commonjs/db.js index 45a4a52..edef61c 100644 --- a/JavaScript/c-commonjs/db.js +++ b/JavaScript/c-commonjs/db.js @@ -4,11 +4,11 @@ const pg = require('pg'); let pool = null; -const init = (options) => { +const init = options => { pool = new pg.Pool(options); }; -const crud = (table) => ({ +const crud = table => ({ async query(sql, args) { const result = await pool.query(sql, args); return result.rows; @@ -52,7 +52,7 @@ const crud = (table) => ({ }, async delete(id) { - const sql = 'DELETE FROM ${table} WHERE id = $1'; + const sql = `DELETE FROM ${table} WHERE id = $1`; return pool.query(sql, [id]); }, }); diff --git a/JavaScript/c-commonjs/static/client.js b/JavaScript/c-commonjs/static/client.js index b5e08f1..696cad5 100644 --- a/JavaScript/c-commonjs/static/client.js +++ b/JavaScript/c-commonjs/static/client.js @@ -22,7 +22,6 @@ transport.http = url => structure => { }); } } - console.log(api); return Promise.resolve(api); }; @@ -56,7 +55,7 @@ const scaffold = url => { }; (async () => { - const api = await scaffold('ws://localhost:8001')({ + const api = await scaffold('http://localhost:8001')({ user: { create: ['record'], read: ['id'], @@ -73,6 +72,6 @@ const scaffold = url => { say: ['message'], } }); - const data = await api.user.read(3); + const data = await api.talks.say('hello'); console.dir({ data }); })(); diff --git a/JavaScript/c-commonjs/transport/http.js b/JavaScript/c-commonjs/transport/http.js index f17b8c1..b8ba789 100644 --- a/JavaScript/c-commonjs/transport/http.js +++ b/JavaScript/c-commonjs/transport/http.js @@ -31,10 +31,10 @@ module.exports = (routing, port, console) => { const src = handler.toString(); const signature = src.substring(0, src.indexOf(')')); const args = []; - if (signature.includes('(id')) args.push(id); + if (id) args.push(id); if (signature.includes('{')) args.push(await receiveArgs(req)); - console.log(`${socket.remoteAddress} ${method} ${url}`); const result = await handler(...args); + console.log(`${socket.remoteAddress} ${method} ${url}`); res.end(JSON.stringify(result.rows ? result.rows : result)); }).listen(port); From 6266b5b1c652ce73dbb31208810e50ab1a88d1e9 Mon Sep 17 00:00:00 2001 From: Alexey Buglak Date: Sun, 10 Sep 2023 12:39:35 +0200 Subject: [PATCH 3/7] fix delete in db.js in d-messenger --- JavaScript/d-messenger/lib/db.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/d-messenger/lib/db.js b/JavaScript/d-messenger/lib/db.js index 5e26018..bf71f92 100644 --- a/JavaScript/d-messenger/lib/db.js +++ b/JavaScript/d-messenger/lib/db.js @@ -46,7 +46,7 @@ const crud = (pool) => (table) => ({ }, async delete(id) { - const sql = 'DELETE FROM ${table} WHERE id = $1'; + const sql = `DELETE FROM ${table} WHERE id = $1`; return pool.query(sql, [id]); }, }); From 85a693929d86efc8129917a4862e8a0213412c77 Mon Sep 17 00:00:00 2001 From: Alex Buglak Date: Tue, 5 Dec 2023 20:53:52 +0100 Subject: [PATCH 4/7] fixed db and client in d-messenger --- JavaScript/d-messenger/lib/db.js | 6 +++--- JavaScript/d-messenger/static/client.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/JavaScript/d-messenger/lib/db.js b/JavaScript/d-messenger/lib/db.js index bf71f92..c03d384 100644 --- a/JavaScript/d-messenger/lib/db.js +++ b/JavaScript/d-messenger/lib/db.js @@ -10,7 +10,7 @@ const crud = (pool) => (table) => ({ async read(id, fields = ['*']) { const names = fields.join(', '); - const sql = `SELECT ${names} FROM ${table}`; + const sql = `SELECT ${names} FROM "${table}"`; if (!id) return pool.query(sql); return pool.query(`${sql} WHERE id = $1`, [id]); }, @@ -40,13 +40,13 @@ const crud = (pool) => (table) => ({ updates[i] = `${key} = $${++i}`; } const delta = updates.join(', '); - const sql = `UPDATE ${table} SET ${delta} WHERE id = $${++i}`; + const sql = `UPDATE "${table}" SET ${delta} WHERE id = $${++i}`; data.push(id); return pool.query(sql, data); }, async delete(id) { - const sql = `DELETE FROM ${table} WHERE id = $1`; + const sql = `DELETE FROM "${table}" WHERE id = $1`; return pool.query(sql, [id]); }, }); diff --git a/JavaScript/d-messenger/static/client.js b/JavaScript/d-messenger/static/client.js index 633f56f..0666a5f 100644 --- a/JavaScript/d-messenger/static/client.js +++ b/JavaScript/d-messenger/static/client.js @@ -15,7 +15,7 @@ transport.http = (url) => (structure) => { fetch(`${url}/api/${name}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ args }), + body: JSON.stringify({ ...args }), }).then((res) => { if (res.status === 200) resolve(res.json()); else reject(new Error(`Status Code: ${res.status}`)); From b07c96c1d523ab3d60c0d8d2634622873b1890a5 Mon Sep 17 00:00:00 2001 From: Alex Buglak Date: Wed, 6 Dec 2023 14:52:35 +0100 Subject: [PATCH 5/7] linter changes --- JavaScript/c-commonjs/db.js | 4 ++-- JavaScript/c-commonjs/static.js | 2 +- JavaScript/c-commonjs/static/client.js | 16 ++++++++-------- JavaScript/c-commonjs/transport/http.js | 2 +- JavaScript/c-commonjs/transport/ws.js | 6 ++++-- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/JavaScript/c-commonjs/db.js b/JavaScript/c-commonjs/db.js index edef61c..3964203 100644 --- a/JavaScript/c-commonjs/db.js +++ b/JavaScript/c-commonjs/db.js @@ -4,11 +4,11 @@ const pg = require('pg'); let pool = null; -const init = options => { +const init = (options) => { pool = new pg.Pool(options); }; -const crud = table => ({ +const crud = (table) => ({ async query(sql, args) { const result = await pool.query(sql, args); return result.rows; diff --git a/JavaScript/c-commonjs/static.js b/JavaScript/c-commonjs/static.js index a2d8324..8445a85 100644 --- a/JavaScript/c-commonjs/static.js +++ b/JavaScript/c-commonjs/static.js @@ -18,4 +18,4 @@ module.exports = (root, port, console) => { }).listen(port); console.log(`Static on port ${port}`); -}; \ No newline at end of file +}; diff --git a/JavaScript/c-commonjs/static/client.js b/JavaScript/c-commonjs/static/client.js index 696cad5..28731cb 100644 --- a/JavaScript/c-commonjs/static/client.js +++ b/JavaScript/c-commonjs/static/client.js @@ -2,7 +2,7 @@ const transport = {}; -transport.http = url => structure => { +transport.http = (url) => (structure) => { const api = {}; const services = Object.keys(structure); for (const name of services) { @@ -15,7 +15,7 @@ transport.http = url => structure => { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ args }), - }).then(res => { + }).then((res) => { if (res.status === 200) resolve(res.json()); else reject(new Error(`Status Code: ${res.status}`)); }); @@ -25,7 +25,7 @@ transport.http = url => structure => { return Promise.resolve(api); }; -transport.ws = url => structure => { +transport.ws = (url) => (structure) => { const socket = new WebSocket(url); const api = {}; const services = Object.keys(structure); @@ -34,22 +34,22 @@ transport.ws = url => structure => { const service = structure[name]; const methods = Object.keys(service); for (const method of methods) { - api[name][method] = (...args) => new Promise(resolve => { + api[name][method] = (...args) => new Promise((resolve) => { const packet = { name, method, args }; socket.send(JSON.stringify(packet)); - socket.onmessage = event => { + socket.onmessage = (event) => { const data = JSON.parse(event.data); resolve(data); }; }); } } - return new Promise(resolve => { + return new Promise((resolve) => { socket.addEventListener('open', () => resolve(api)); }); }; -const scaffold = url => { +const scaffold = (url) => { const protocol = url.startsWith('ws:') ? 'ws' : 'http'; return transport[protocol](url); }; @@ -73,5 +73,5 @@ const scaffold = url => { } }); const data = await api.talks.say('hello'); - console.dir({ data }); + console.log({ data }); })(); diff --git a/JavaScript/c-commonjs/transport/http.js b/JavaScript/c-commonjs/transport/http.js index b8ba789..f04a940 100644 --- a/JavaScript/c-commonjs/transport/http.js +++ b/JavaScript/c-commonjs/transport/http.js @@ -12,7 +12,7 @@ const HEADERS = { 'Content-Type': 'application/json; charset=UTF-8', }; -const receiveArgs = async req => { +const receiveArgs = async (req) => { const buffers = []; for await (const chunk of req) buffers.push(chunk); const data = Buffer.concat(buffers).toString(); diff --git a/JavaScript/c-commonjs/transport/ws.js b/JavaScript/c-commonjs/transport/ws.js index 7d44556..0462317 100644 --- a/JavaScript/c-commonjs/transport/ws.js +++ b/JavaScript/c-commonjs/transport/ws.js @@ -7,7 +7,7 @@ module.exports = (routing, port, console) => { ws.on('connection', (connection, req) => { const ip = req.socket.remoteAddress; - connection.on('message', async message => { + connection.on('message', async (message) => { const obj = JSON.parse(message); const { name, method, args = [] } = obj; const entity = routing[name]; @@ -25,7 +25,9 @@ module.exports = (routing, port, console) => { console.log(`${ip} ${name}.${method}(${parameters})`); try { const result = await handler(...args); - connection.send(JSON.stringify(result.rows ? result.rows : result), { binary: false }); + connection.send( + JSON.stringify(result.rows ? result.rows : result), { binary: false } + ); } catch (err) { console.error(err); connection.send('"Server error"', { binary: false }); From d4a59760c9c4f91de0ad5d14a9cf3b55b2dbcd8f Mon Sep 17 00:00:00 2001 From: Alex Buglak Date: Wed, 6 Dec 2023 19:12:13 +0100 Subject: [PATCH 6/7] c-common revision --- JavaScript/c-commonjs/static.js | 22 +++++++++++++++ JavaScript/c-commonjs/static/client.js | 4 +-- JavaScript/c-commonjs/transport/http.js | 34 ++++++++++++------------ JavaScript/d-messenger/static/client.js | 2 +- JavaScript/d-messenger/transport/http.js | 2 +- 5 files changed, 43 insertions(+), 21 deletions(-) diff --git a/JavaScript/c-commonjs/static.js b/JavaScript/c-commonjs/static.js index 8445a85..0a2b185 100644 --- a/JavaScript/c-commonjs/static.js +++ b/JavaScript/c-commonjs/static.js @@ -4,12 +4,34 @@ const http = require('node:http'); const path = require('node:path'); const fs = require('node:fs'); +const MIME_TYPES = { + html: 'text/html; charset=UTF-8', + json: 'application/json; charset=UTF-8', + js: 'application/javascript; charset=UTF-8', + css: 'text/css', + png: 'image/png', + ico: 'image/x-icon', + svg: 'image/svg+xml', +}; + +const HEADERS = { + 'X-XSS-Protection': '1; mode=block', + 'X-Content-Type-Options': 'nosniff', + 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS', + 'Access-Control-Allow-Headers': 'Content-Type', +}; + module.exports = (root, port, console) => { http.createServer(async (req, res) => { const url = req.url === '/' ? '/index.html' : req.url; const filePath = path.join(root, url); try { const data = await fs.promises.readFile(filePath); + const fileExt = path.extname(filePath).substring(1); + const mimeType = MIME_TYPES[fileExt] || MIME_TYPES.html; + res.writeHead(200, { ...HEADERS, 'Content-Type': mimeType }); res.end(data); } catch (err) { res.statusCode = 404; diff --git a/JavaScript/c-commonjs/static/client.js b/JavaScript/c-commonjs/static/client.js index 28731cb..1ad6f5d 100644 --- a/JavaScript/c-commonjs/static/client.js +++ b/JavaScript/c-commonjs/static/client.js @@ -11,7 +11,7 @@ transport.http = (url) => (structure) => { const methods = Object.keys(service); for (const method of methods) { api[name][method] = (...args) => new Promise((resolve, reject) => { - fetch(`${url}/${name}/${method}/${args}`, { + fetch(`${url}/api/${name}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ args }), @@ -72,6 +72,6 @@ const scaffold = (url) => { say: ['message'], } }); - const data = await api.talks.say('hello'); + const data = await api.user.read(); console.log({ data }); })(); diff --git a/JavaScript/c-commonjs/transport/http.js b/JavaScript/c-commonjs/transport/http.js index f04a940..a169fb6 100644 --- a/JavaScript/c-commonjs/transport/http.js +++ b/JavaScript/c-commonjs/transport/http.js @@ -20,23 +20,23 @@ const receiveArgs = async (req) => { }; module.exports = (routing, port, console) => { - http.createServer(async (req, res) => { - res.writeHead(200, HEADERS); - const { url, socket } = req; - const [name, method, id] = url.substring(1).split('/'); - const entity = routing[name]; - if (!entity) return void res.end('"Not found"'); - const handler = entity[method]; - if (!handler) return void res.end('"Not found"'); - const src = handler.toString(); - const signature = src.substring(0, src.indexOf(')')); - const args = []; - if (id) args.push(id); - if (signature.includes('{')) args.push(await receiveArgs(req)); - const result = await handler(...args); - console.log(`${socket.remoteAddress} ${method} ${url}`); - res.end(JSON.stringify(result.rows ? result.rows : result)); - }).listen(port); + http + .createServer(async (req, res) => { + res.writeHead(200, HEADERS); + if (req.method !== 'POST') return void res.end('"Not found"'); + const { url, socket } = req; + const [place, name, method] = url.substring(1).split('/'); + if (place !== 'api') return void res.end('"Not found"'); + const entity = routing[name]; + if (!entity) return void res.end('"Not found"'); + const handler = entity[method]; + if (!handler) return void res.end('"Not found"'); + const { args } = await receiveArgs(req); + console.log(`${socket.remoteAddress} ${method} ${url}`); + const result = await handler(...args); + res.end(JSON.stringify(result)); + }) + .listen(port); console.log(`API on port ${port}`); }; diff --git a/JavaScript/d-messenger/static/client.js b/JavaScript/d-messenger/static/client.js index 0666a5f..633f56f 100644 --- a/JavaScript/d-messenger/static/client.js +++ b/JavaScript/d-messenger/static/client.js @@ -15,7 +15,7 @@ transport.http = (url) => (structure) => { fetch(`${url}/api/${name}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ ...args }), + body: JSON.stringify({ args }), }).then((res) => { if (res.status === 200) resolve(res.json()); else reject(new Error(`Status Code: ${res.status}`)); diff --git a/JavaScript/d-messenger/transport/http.js b/JavaScript/d-messenger/transport/http.js index ecc9711..a169fb6 100644 --- a/JavaScript/d-messenger/transport/http.js +++ b/JavaScript/d-messenger/transport/http.js @@ -33,7 +33,7 @@ module.exports = (routing, port, console) => { if (!handler) return void res.end('"Not found"'); const { args } = await receiveArgs(req); console.log(`${socket.remoteAddress} ${method} ${url}`); - const result = await handler(args); + const result = await handler(...args); res.end(JSON.stringify(result)); }) .listen(port); From 17b0bd6806e16800548c7509665bdf6feddb43cd Mon Sep 17 00:00:00 2001 From: Alex Buglak Date: Wed, 6 Dec 2023 19:22:42 +0100 Subject: [PATCH 7/7] c-common api an ws fixes --- JavaScript/c-commonjs/api/user.js | 10 +++++----- JavaScript/c-commonjs/static/client.js | 2 +- JavaScript/c-commonjs/transport/ws.js | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/JavaScript/c-commonjs/api/user.js b/JavaScript/c-commonjs/api/user.js index b2e65b7..57843c4 100644 --- a/JavaScript/c-commonjs/api/user.js +++ b/JavaScript/c-commonjs/api/user.js @@ -6,25 +6,25 @@ const users = db.crud('users'); module.exports = { async read(id) { - return users.read(id, ['id', 'login']); + return await users.read(id, ['id', 'login']); }, async create({ login, password }) { const passwordHash = await common.hash(password); - return users.create({ login, password: passwordHash }); + return await users.create({ login, password: passwordHash }); }, async update(id, { login, password }) { const passwordHash = await common.hash(password); - return users.update(id, { login, password: passwordHash }); + return await users.update(id, { login, password: passwordHash }); }, async delete(id) { - return users.delete(id); + return await users.delete(id); }, async find(mask) { const sql = 'SELECT login from users where login like $1'; - return users.query(sql, [mask]); + return await users.query(sql, [mask]); }, }; diff --git a/JavaScript/c-commonjs/static/client.js b/JavaScript/c-commonjs/static/client.js index 1ad6f5d..ebe8c66 100644 --- a/JavaScript/c-commonjs/static/client.js +++ b/JavaScript/c-commonjs/static/client.js @@ -73,5 +73,5 @@ const scaffold = (url) => { } }); const data = await api.user.read(); - console.log({ data }); + console.dir({ data }); })(); diff --git a/JavaScript/c-commonjs/transport/ws.js b/JavaScript/c-commonjs/transport/ws.js index 0462317..c9665d6 100644 --- a/JavaScript/c-commonjs/transport/ws.js +++ b/JavaScript/c-commonjs/transport/ws.js @@ -26,7 +26,7 @@ module.exports = (routing, port, console) => { try { const result = await handler(...args); connection.send( - JSON.stringify(result.rows ? result.rows : result), { binary: false } + JSON.stringify(result), { binary: false } ); } catch (err) { console.error(err);