diff options
| author | Jad <[email protected]> | 2020-08-12 10:03:35 +0000 |
|---|---|---|
| committer | Jad <[email protected]> | 2020-08-12 10:03:35 +0000 |
| commit | 3bd1ae58e4e9019cc0bab7c9221da73f02d914c7 (patch) | |
| tree | d824e32c08eec7ede53aec0340d2f2dfe74949db /db | |
| parent | feat: add message board (diff) | |
| download | counter-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.js | 17 | ||||
| -rw-r--r-- | db/mongodb.js | 36 | ||||
| -rw-r--r-- | db/schema.js | 8 | ||||
| -rw-r--r-- | db/sqlite.js | 60 |
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 |