aboutsummaryrefslogtreecommitdiff
path: root/src/data/snippets.js
diff options
context:
space:
mode:
authorSin-MacBook <[email protected]>2020-08-10 23:44:20 +0200
committerSin-MacBook <[email protected]>2020-08-10 23:44:20 +0200
commit2a53887abba882bf7b63aeda8dfa55fdb3ab8792 (patch)
treead7a95eb41faa6ff13c3142285cdc0eb3ca92183 /src/data/snippets.js
downloadmodmail-2a53887abba882bf7b63aeda8dfa55fdb3ab8792.tar.xz
modmail-2a53887abba882bf7b63aeda8dfa55fdb3ab8792.zip
clean this up when home
Diffstat (limited to 'src/data/snippets.js')
-rw-r--r--src/data/snippets.js58
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,
+};