Browse Source

Implemented News on the backend

theflametrooper 8 years ago
parent
commit
d8b6bae49e

+ 2 - 1
backend/logic/actions/index.js

@@ -4,5 +4,6 @@ module.exports = {
 	apis: require('./apis'),
 	songs: require('./songs'),
 	stations: require('./stations'),
-	users: require('./users')
+	users: require('./users'),
+	news: require('./news')
 };

+ 21 - 0
backend/logic/actions/news.js

@@ -0,0 +1,21 @@
+'use strict';
+
+const db = require('../db');
+
+module.exports = {
+
+	all: (session, cb) => {
+		db.models.news.find({}).sort({ released: 'desc' }).exec((err, news) => {
+			if (err) throw err;
+			else cb({ status: 'success', data: news });
+		});
+	},
+
+	newest: (session, cb) => {
+		db.models.news.findOne({}).sort({ released: 'asc' }).exec((err, news) => {
+			if (err) throw err;
+			else cb({ status: 'success', data: news });
+		});
+	}
+
+};

+ 4 - 2
backend/logic/db/index.js

@@ -20,14 +20,16 @@ let lib = {
 				song: new mongoose.Schema(require(`./schemas/song`)),
 				queueSong: new mongoose.Schema(require(`./schemas/queueSong`)),
 				station: new mongoose.Schema(require(`./schemas/station`)),
-				user: new mongoose.Schema(require(`./schemas/user`))
+				user: new mongoose.Schema(require(`./schemas/user`)),
+				news: new mongoose.Schema(require(`./schemas/news`))
 			};
 
 			lib.models = {
 				song: mongoose.model('song', lib.schemas.song),
 				queueSong: mongoose.model('queueSong', lib.schemas.queueSong),
 				station: mongoose.model('station', lib.schemas.station),
-				user: mongoose.model('user', lib.schemas.user)
+				user: mongoose.model('user', lib.schemas.user),
+				news: mongoose.model('news', lib.schemas.news)
 			};
 
 			cb();

+ 9 - 0
backend/logic/db/schemas/news.js

@@ -0,0 +1,9 @@
+module.exports = {
+	released: { type: Date, default: Date.now(), required: true},
+	title: { type: String, required: true },
+	content: [{
+		head: String,
+		body: [{ type: String }]
+	}],
+	author: { type: String, default: 'Musare Team', required: true }
+};

+ 1 - 0
backend/logic/db/schemas/song.js

@@ -3,5 +3,6 @@ module.exports = {
 	title: { type: String, required: true },
 	artists: [{ type: String }],
 	duration: { type: String, required: true },
+	skipDuration: { type: Number, required: true },
 	thumbnail: { type: String, required: true }
 };

+ 2 - 2
frontend/components/MainHeader.vue

@@ -19,8 +19,8 @@
 			<a class="nav-item is-tab" href="#">
 				About
 			</a>
-			<a class="nav-item is-tab" href="#">
-				Donate
+			<a class="nav-item is-tab" href="#" v-link="{ path: '/news' }">
+				News
 			</a>
 			<a class="nav-item is-tab" href="#" v-if="$parent.$parent.loggedIn" @click="$parent.$parent.logout()">
 				Sign Out

+ 32 - 0
frontend/components/pages/News.vue

@@ -0,0 +1,32 @@
+<template>
+	<div class="app">
+		<main-header></main-header>
+		<!--<article v-for="item in news">
+			<h1>{{ item.author }}</h1>
+		</article>-->
+		<main-footer></main-footer>
+	</div>
+</template>
+
+<script>
+	import MainHeader from '../MainHeader.vue';
+	import MainFooter from '../MainFooter.vue';
+
+	export default {
+		components: { MainHeader, MainFooter },
+		data() {
+			return {
+				news: []
+			}
+		},
+		ready: function () {
+			// let socket = this.socket = this.$parent.socket;
+			// socket.emit("news.all", function(res) {
+			// 	this.news = res.data;
+			// 	console.log(this.news)
+			// });
+		}
+	}
+</script>
+
+<style lang="scss" scoped></style>

+ 4 - 0
frontend/main.js

@@ -6,6 +6,7 @@ import App from './App.vue';
 import Home from './components/pages/Home.vue';
 import Station from './components/Station/Station.vue';
 import Admin from './components/pages/Admin.vue';
+import News from './components/pages/News.vue';
 import User from './components/User/Show.vue';
 import Settings from './components/User/Settings.vue';
 
@@ -17,6 +18,9 @@ router.map({
 	'/': {
 		component: Home
 	},
+	'/news': {
+		component: News
+	},
 	'/u/:username': {
 		component: User
 	},