From 73be4cfe28b7a8bf96f7a255e8ce90da829ab2be Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Thu, 3 Nov 2016 11:25:09 -0600 Subject: [PATCH] add some update statics --- .eslintrc.json | 1 - models/SETTINGS_ROADMAP.md | 30 +++++++++++++++++++++++++++++ models/setting.js | 37 +++++++++++------------------------- routes/api/settings/index.js | 22 +++++++++++++++++++++ 4 files changed, 63 insertions(+), 27 deletions(-) create mode 100644 models/SETTINGS_ROADMAP.md create mode 100644 routes/api/settings/index.js diff --git a/.eslintrc.json b/.eslintrc.json index f92aa27b1..eec982dac 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -36,7 +36,6 @@ "yoda": [1], "no-path-concat": [2], "no-process-exit": [2], - "camelcase": [1], "eol-last": [1], "no-continue": [1], "no-nested-ternary": [1], diff --git a/models/SETTINGS_ROADMAP.md b/models/SETTINGS_ROADMAP.md new file mode 100644 index 000000000..b49a0f8a9 --- /dev/null +++ b/models/SETTINGS_ROADMAP.md @@ -0,0 +1,30 @@ +These are some settings we're planning on implementing in the future. +I'm keeping them in this file for reference + +```javascript +anonymous_users: {type: Boolean, default: false}, +block_mute_enabled: {type: Boolean, default: false}, +comment_count: {type: Boolean, default: false}, +comment_editing_enabled: {type: Boolean, default: false}, +comments_hidden: {type: Boolean, default: false}, +community_guidelines: {type: Boolean, default: false}, +detailed_flags: {type: Boolean, default: false}, +emojis_enabled: {type: Boolean, default: false}, +following: {type: Boolean, default: false}, +likes_enabled: {type: Boolean, default: false}, +mentions: {type: Boolean, default: false}, +nested_replies: {type: Boolean, default: false}, +notification_timeout: {type: Number, default: 4500}, +permalinks: {type: Boolean, default: false}, +post_button_text: {type: String, default: 'Post'}, +pseudonyms: {type: Boolean, default: false}, +public_profile: {type: Boolean, default: false}, +reactions_enabled: {type: Boolean, default: false}, +reply_button_text: {type: String, default: 'Reply'}, +rich_content: {type: Boolean, default: false}, +show_staff_picks: {type: Boolean, default: false}, +up_down_voting: {type: Boolean, default: false}, +user_badges: {type: Boolean, default: false}, +user_mods_enabled: {type: Boolean, default: false}, +user_stats_enabled: {type: Boolean, default: false} +``` diff --git a/models/setting.js b/models/setting.js index 2b0013868..aec51c810 100644 --- a/models/setting.js +++ b/models/setting.js @@ -3,32 +3,17 @@ const uuid = require('uuid'); const Schema = mongoose.Schema; const SettingSchema = new Schema({ - anonymous_users: {type: Boolean, default: false}, - block_mute_enabled: {type: Boolean, default: false}, - comment_count: {type: Boolean, default: false}, - comment_editing_enabled: {type: Boolean, default: false}, - comments_hidden: {type: Boolean, default: false}, - community_guidelines: {type: Boolean, default: false}, - detailed_flags: {type: Boolean, default: false}, - emojis_enabled: {type: Boolean, default: false}, - following: {type: Boolean, default: false}, - likes_enabled: {type: Boolean, default: false}, - mentions: {type: Boolean, default: false}, - nested_replies: {type: Boolean, default: false}, - notification_timeout: {type: Number, default: 4500}, - permalinks: {type: Boolean, default: false}, - post_button_text: {type: String, default: 'Post'}, - pseudonyms: {type: Boolean, default: false}, - public_profile: {type: Boolean, default: false}, - reactions_enabled: {type: Boolean, default: false}, - reply_button_text: {type: String, default: 'Reply'}, - rich_content: {type: Boolean, default: false}, - show_staff_picks: {type: Boolean, default: false}, - up_down_voting: {type: Boolean, default: false}, - user_badges: {type: Boolean, default: false}, - user_mods_enabled: {type: Boolean, default: false}, - user_stats_enabled: {type: Boolean, default: false} -}); + moderation: {type: String, enum: ['pre', 'post'], default: 'pre'}, + +}, {timestamps: {createdAt: 'created_at', updatedAt: 'updated_at'}}); + +SettingSchema.statics.getSettings = function () { + return this.findOne(); +}; + +SettingSchema.statics.updateSettings = function (setting) { + return this.findOneAndUpdate({}, {$set: setting}, {new: true}); +}; const Setting = mongoose.model('Setting', SettingSchema); diff --git a/routes/api/settings/index.js b/routes/api/settings/index.js new file mode 100644 index 000000000..b801fb8ea --- /dev/null +++ b/routes/api/settings/index.js @@ -0,0 +1,22 @@ +const express = require('express'); +const router = express.Router(); +const path = require('path'); +const Setting = require(path.resolve(__dirname, 'models/setting')); + +router.get('/settings', (req, res, next) => { + Setting.getSettings().then(settings => { + res.json(settings); + }).catch(error => { + next(error); + }); +}); + +router.put('/settings', (req, res, next) => { + Setting.updateSettings(req.body).then(updatedSettings => { + res.json(updatedSettings); + }).catch(error => { + next(error); + }); +}); + +module.exports = router;