aboutsummaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorJad <[email protected]>2020-08-12 10:03:35 +0000
committerJad <[email protected]>2020-08-12 10:03:35 +0000
commit3bd1ae58e4e9019cc0bab7c9221da73f02d914c7 (patch)
treed824e32c08eec7ede53aec0340d2f2dfe74949db /db
parentfeat: add message board (diff)
downloadcounter-3bd1ae58e4e9019cc0bab7c9221da73f02d914c7.tar.xz
counter-3bd1ae58e4e9019cc0bab7c9221da73f02d914c7.zip
feat: support mongoDB
feat: support dynamic image size docs: add Readme.md
Diffstat (limited to 'db')
-rw-r--r--db/index.js17
-rw-r--r--db/mongodb.js36
-rw-r--r--db/schema.js8
-rw-r--r--db/sqlite.js60
4 files changed, 121 insertions, 0 deletions
diff --git a/db/index.js b/db/index.js
new file mode 100644
index 0000000..d6d9f48
--- /dev/null
+++ b/db/index.js
@@ -0,0 +1,17 @@
+'use strict'
+
+const config = require('config-yml')
+
+let db
+
+switch(config.db.type){
+ case 'mongo':
+ db = require('./mongo')
+ break;
+ case 'sqlite':
+ default:
+ db = require('./sqlite')
+ break;
+}
+
+module.exports = db \ No newline at end of file
diff --git a/db/mongodb.js b/db/mongodb.js
new file mode 100644
index 0000000..fa7e96d
--- /dev/null
+++ b/db/mongodb.js
@@ -0,0 +1,36 @@
+'use strict'
+
+const mongoose = require('mongoose')
+const schema = require('./schema')
+
+mongoose.connect(process.env.DB_URL, {
+ useNewUrlParser: true,
+ useUnifiedTopology: true,
+ useFindAndModify: false
+})
+
+const Count = mongoose.connection.model('Count', schema)
+
+function getNum(name) {
+ return Count
+ .findOne({ name }, '-_id -__v')
+ .exec()
+}
+
+function getAll() {
+ return Count
+ .find({ }, '-_id -__v')
+ .exec()
+}
+
+function setNum(name, num) {
+ return Count
+ .findOneAndUpdate({ name }, { name, num }, { upsert: true })
+ .exec()
+}
+
+module.exports = {
+ getNum,
+ getAll,
+ setNum
+} \ No newline at end of file
diff --git a/db/schema.js b/db/schema.js
new file mode 100644
index 0000000..f558723
--- /dev/null
+++ b/db/schema.js
@@ -0,0 +1,8 @@
+'use strict'
+
+const mongoose = require('mongoose');
+
+module.exports = new mongoose.Schema({
+ name: { type: String, required: true },
+ num: { type: Number, required: true }
+}, { collection: 'tb_count', versionKey: false }); \ No newline at end of file
diff --git a/db/sqlite.js b/db/sqlite.js
new file mode 100644
index 0000000..0912101
--- /dev/null
+++ b/db/sqlite.js
@@ -0,0 +1,60 @@
+'use strict'
+
+const path = require('path')
+const sqlite3 = require('sqlite3')
+
+const db = new sqlite3.Database(path.resolve(__dirname, '../count.db'))
+
+db.run(`CREATE TABLE IF NOT EXISTS tb_count (
+ id INTEGER PRIMARY KEY AUTOINCREMENT
+ NOT NULL
+ UNIQUE,
+ name VARCHAR (32) NOT NULL
+ UNIQUE,
+ num BIGINT NOT NULL
+ DEFAULT (0)
+);`)
+
+function getNum(name) {
+ return new Promise((resolve, reject) => {
+ db.get('SELECT `name`, `num` from tb_count WHERE `name` = ?', name, (err, row) => {
+ if (err) reject(err)
+
+ resolve(row || { name, num: 0 })
+ })
+ })
+}
+
+function getAll(name) {
+ return new Promise((resolve, reject) => {
+ db.get('SELECT * from tb_count', (err, row) => {
+ if (err) reject(err)
+
+ resolve(row)
+ })
+ })
+}
+
+function setNum(name, num) {
+ return new Promise((resolve, reject) => {
+ db.run(`INSERT INTO tb_count(\`name\`, \`num\`)
+ VALUES($name, $num)
+ ON CONFLICT(name) DO
+ UPDATE SET \`num\` = $num;`
+ , {
+ $name: name,
+ $num: num
+ }
+ , (err, row) => {
+ if (err) reject(err)
+
+ resolve(row)
+ })
+ })
+}
+
+module.exports = {
+ getNum,
+ getAll,
+ setNum
+} \ No newline at end of file