diff options
| author | Sin-MacBook <[email protected]> | 2020-08-10 23:44:20 +0200 |
|---|---|---|
| committer | Sin-MacBook <[email protected]> | 2020-08-10 23:44:20 +0200 |
| commit | 2a53887abba882bf7b63aeda8dfa55fdb3ab8792 (patch) | |
| tree | ad7a95eb41faa6ff13c3142285cdc0eb3ca92183 /src/data/snippets.js | |
| download | modmail-2a53887abba882bf7b63aeda8dfa55fdb3ab8792.tar.xz modmail-2a53887abba882bf7b63aeda8dfa55fdb3ab8792.zip | |
clean this up when home
Diffstat (limited to 'src/data/snippets.js')
| -rw-r--r-- | src/data/snippets.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/data/snippets.js b/src/data/snippets.js new file mode 100644 index 0000000..a95b2b4 --- /dev/null +++ b/src/data/snippets.js @@ -0,0 +1,58 @@ +const moment = require('moment'); +const knex = require('../knex'); +const Snippet = require('./Snippet'); + +/** + * @param {String} trigger + * @returns {Promise<Snippet>} + */ +async function getSnippet(trigger) { + const snippet = await knex('snippets') + .where('trigger', trigger) + .first(); + + return (snippet ? new Snippet(snippet) : null); +} + +/** + * @param {String} trigger + * @param {String} body + * @returns {Promise<void>} + */ +async function addSnippet(trigger, body, createdBy = 0) { + if (await getSnippet(trigger)) return; + + return knex('snippets').insert({ + trigger, + body, + created_by: createdBy, + created_at: moment.utc().format('YYYY-MM-DD HH:mm:ss') + }); +} + +/** + * @param {String} trigger + * @returns {Promise<void>} + */ +async function deleteSnippet(trigger) { + return knex('snippets') + .where('trigger', trigger) + .delete(); +} + +/** + * @returns {Promise<Snippet[]>} + */ +async function getAllSnippets() { + const snippets = await knex('snippets') + .select(); + + return snippets.map(s => new Snippet(s)); +} + +module.exports = { + get: getSnippet, + add: addSnippet, + del: deleteSnippet, + all: getAllSnippets, +}; |