Add campaign model and endpoint
							parent
							
								
									9eb5b5cf03
								
							
						
					
					
						commit
						8319b79e1f
					
				| 
						 | 
					@ -1,18 +1,19 @@
 | 
				
			||||||
const rootRoute = '/api';
 | 
					const rootRoute = '/api';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  account: rootRoute + '/account',
 | 
				
			||||||
  auth: rootRoute + '/authenticate',
 | 
					  auth: rootRoute + '/authenticate',
 | 
				
			||||||
  signUp: rootRoute + '/authenticate/signup',
 | 
					 | 
				
			||||||
  awards: rootRoute + '/awardings',
 | 
					  awards: rootRoute + '/awardings',
 | 
				
			||||||
  command: rootRoute + '/cmd',
 | 
					  campaigns: rootRoute + '/campaigns',
 | 
				
			||||||
  cmdCreateSig: rootRoute + '/cmd/createSignature',
 | 
					  cmdCreateSig: rootRoute + '/cmd/createSignature',
 | 
				
			||||||
 | 
					  command: rootRoute + '/cmd',
 | 
				
			||||||
  decorations: rootRoute + '/decorations',
 | 
					  decorations: rootRoute + '/decorations',
 | 
				
			||||||
  overview: rootRoute + '/overview',
 | 
					  overview: rootRoute + '/overview',
 | 
				
			||||||
  ranks: rootRoute + '/ranks',
 | 
					  ranks: rootRoute + '/ranks',
 | 
				
			||||||
 | 
					  request: rootRoute + '/request',
 | 
				
			||||||
  signatures: '/signatures',
 | 
					  signatures: '/signatures',
 | 
				
			||||||
 | 
					  signUp: rootRoute + '/authenticate/signup',
 | 
				
			||||||
  squads: rootRoute + '/squads',
 | 
					  squads: rootRoute + '/squads',
 | 
				
			||||||
  users: rootRoute + '/users',
 | 
					  users: rootRoute + '/users',
 | 
				
			||||||
  account: rootRoute + '/account',
 | 
					 | 
				
			||||||
  request: rootRoute + '/request',
 | 
					 | 
				
			||||||
  wars: rootRoute + '/wars'
 | 
					  wars: rootRoute + '/wars'
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const mongoose = require('mongoose');
 | 
				
			||||||
 | 
					const Schema = mongoose.Schema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const CampaignSchema = new Schema({
 | 
				
			||||||
 | 
					  title: {
 | 
				
			||||||
 | 
					    type: String,
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					  collection: 'campaign',
 | 
				
			||||||
 | 
					  timestamps: {createdAt: 'timestamp'}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					// optional more indices
 | 
				
			||||||
 | 
					CampaignSchema.index({timestamp: 1});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = mongoose.model('Campaign', CampaignSchema);
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,10 @@ const WarSchema = new Schema({
 | 
				
			||||||
    get: v => Math.round(v),
 | 
					    get: v => Math.round(v),
 | 
				
			||||||
    set: v => Math.round(v),
 | 
					    set: v => Math.round(v),
 | 
				
			||||||
    default: 0
 | 
					    default: 0
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  campaign: {
 | 
				
			||||||
 | 
					    type: mongoose.Schema.Types.ObjectId,
 | 
				
			||||||
 | 
					    ref: 'Campaign'
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
  collection: 'war',
 | 
					  collection: 'war',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// modules
 | 
				
			||||||
 | 
					const express = require('express');
 | 
				
			||||||
 | 
					const logger = require('debug')('cc:campaigns');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// HTTP status codes by name
 | 
				
			||||||
 | 
					const codes = require('./http-codes');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const routerHandling = require('../middleware/router-handling');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Mongoose Model using mongoDB
 | 
				
			||||||
 | 
					const CampaignModel = require('../models/campaign');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const campaigns = express.Router();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// routes **********************
 | 
				
			||||||
 | 
					campaigns.route('/')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .post((req, res, next) => {
 | 
				
			||||||
 | 
					    const campaign = new CampaignModel(req.body);
 | 
				
			||||||
 | 
					    // timestamp and default are set automatically by Mongoose Schema Validation
 | 
				
			||||||
 | 
					    campaign.save((err) => {
 | 
				
			||||||
 | 
					      if (err) {
 | 
				
			||||||
 | 
					        err.status = codes.wrongrequest;
 | 
				
			||||||
 | 
					        err.message += ' in fields: ' + Object.getOwnPropertyNames(err.errors);
 | 
				
			||||||
 | 
					        return next(err);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      res.status(codes.created);
 | 
				
			||||||
 | 
					      res.locals.items = campaign;
 | 
				
			||||||
 | 
					      next();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .all(
 | 
				
			||||||
 | 
					    routerHandling.httpMethodNotAllowed
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// this middleware function can be used, if you like or remove it
 | 
				
			||||||
 | 
					// it looks for object(s) in res.locals.items and if they exist, they are send to the client as json
 | 
				
			||||||
 | 
					campaigns.use(routerHandling.emptyResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = campaigns;
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,7 @@ const checkMT = require('../middleware/permission-check').checkMT;
 | 
				
			||||||
const routerHandling = require('../middleware/router-handling');
 | 
					const routerHandling = require('../middleware/router-handling');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Mongoose Model using mongoDB
 | 
					// Mongoose Model using mongoDB
 | 
				
			||||||
 | 
					const CampaignModel = require('../models/campaign');
 | 
				
			||||||
const WarModel = require('../models/war');
 | 
					const WarModel = require('../models/war');
 | 
				
			||||||
const PlayerModel = require('../models/player');
 | 
					const PlayerModel = require('../models/player');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,20 +27,37 @@ const wars = express.Router();
 | 
				
			||||||
// routes **********************
 | 
					// routes **********************
 | 
				
			||||||
wars.route('/')
 | 
					wars.route('/')
 | 
				
			||||||
  .get((req, res, next) => {
 | 
					  .get((req, res, next) => {
 | 
				
			||||||
    const filter = {};
 | 
					    let result = [];
 | 
				
			||||||
    WarModel.find(filter, {}, {sort: {date: 'desc'}}, (err, items) => {
 | 
					    CampaignModel.find({}, {}, {sort: {timestamp: 'desc'}}, (err, campaigns) => {
 | 
				
			||||||
      if (err) {
 | 
					      if (err) {
 | 
				
			||||||
        err.status = codes.servererror;
 | 
					        err.status = codes.servererror;
 | 
				
			||||||
        return next(err);
 | 
					        return next(err);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (items) {
 | 
					      if (campaigns) {
 | 
				
			||||||
        res.locals.items = items;
 | 
					        WarModel.find({}, {}, {sort: {date: 'desc'}}, (err, wars) => {
 | 
				
			||||||
      } else {
 | 
					            if (err) {
 | 
				
			||||||
        res.locals.items = [];
 | 
					              err.status = codes.servererror;
 | 
				
			||||||
 | 
					              return next(err);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (wars) {
 | 
				
			||||||
 | 
					              campaigns.forEach(campaign => {
 | 
				
			||||||
 | 
					                let entry = {title: campaign.title, wars: []};
 | 
				
			||||||
 | 
					                wars.forEach((war) => {
 | 
				
			||||||
 | 
					                  if (String(campaign._id) === String(war.campaign)) {
 | 
				
			||||||
 | 
					                    entry.wars.push(war);
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                result.push(entry);
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					              res.locals.items = result;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            res.locals.processed = true;
 | 
					            res.locals.processed = true;
 | 
				
			||||||
            next();
 | 
					            next();
 | 
				
			||||||
    });
 | 
					          }
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        ;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .post(apiAuthenticationMiddleware, checkMT, upload.single('log'), (req, res, next) => {
 | 
					  .post(apiAuthenticationMiddleware, checkMT, upload.single('log'), (req, res, next) => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ const urls = require('./config/api-url');
 | 
				
			||||||
const restAPIchecks = require('./middleware/request-checks.js');
 | 
					const restAPIchecks = require('./middleware/request-checks.js');
 | 
				
			||||||
const errorResponseWare = require('./middleware/error-response');
 | 
					const errorResponseWare = require('./middleware/error-response');
 | 
				
			||||||
const apiAuthenticationMiddleware = require('./middleware/auth-middleware');
 | 
					const apiAuthenticationMiddleware = require('./middleware/auth-middleware');
 | 
				
			||||||
 | 
					const checkMT = require('./middleware/permission-check').checkMT;
 | 
				
			||||||
const checkAdmin = require('./middleware/permission-check').checkAdmin;
 | 
					const checkAdmin = require('./middleware/permission-check').checkAdmin;
 | 
				
			||||||
const signatureCronJob = require('./cron-job/cron').cronJobSignature;
 | 
					const signatureCronJob = require('./cron-job/cron').cronJobSignature;
 | 
				
			||||||
const backupCronJob = require('./cron-job/cron').cronJobBackup;
 | 
					const backupCronJob = require('./cron-job/cron').cronJobBackup;
 | 
				
			||||||
| 
						 | 
					@ -32,6 +33,7 @@ const awardingRouter = require('./routes/awardings');
 | 
				
			||||||
const requestRouter = require('./routes/request');
 | 
					const requestRouter = require('./routes/request');
 | 
				
			||||||
const signatureRouter = require('./routes/signatures');
 | 
					const signatureRouter = require('./routes/signatures');
 | 
				
			||||||
const commandRouter = require('./routes/command');
 | 
					const commandRouter = require('./routes/command');
 | 
				
			||||||
 | 
					const campaignRouter = require('./routes/campaigns');
 | 
				
			||||||
const warRouter = require('./routes/wars');
 | 
					const warRouter = require('./routes/wars');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Configuration ***********************************
 | 
					// Configuration ***********************************
 | 
				
			||||||
| 
						 | 
					@ -79,6 +81,7 @@ app.use(urls.decorations, decorationRouter);
 | 
				
			||||||
app.use(urls.request, requestRouter);
 | 
					app.use(urls.request, requestRouter);
 | 
				
			||||||
app.use(urls.awards, awardingRouter);
 | 
					app.use(urls.awards, awardingRouter);
 | 
				
			||||||
app.use(urls.wars, warRouter);
 | 
					app.use(urls.wars, warRouter);
 | 
				
			||||||
 | 
					app.use(urls.campaigns, apiAuthenticationMiddleware, checkMT, campaignRouter);
 | 
				
			||||||
app.use(urls.command, apiAuthenticationMiddleware, checkAdmin, commandRouter);
 | 
					app.use(urls.command, apiAuthenticationMiddleware, checkAdmin, commandRouter);
 | 
				
			||||||
app.use(urls.account, apiAuthenticationMiddleware, checkAdmin, accountRouter);
 | 
					app.use(urls.account, apiAuthenticationMiddleware, checkAdmin, accountRouter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.3 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 7.8 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 7.7 KiB  | 
		Loading…
	
		Reference in New Issue