Notes endpoint complete, back to working on model abstractions
This commit is contained in:
16
src/controllers/groupController.js
Normal file
16
src/controllers/groupController.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import {ControllerHandler} from './controllerHandler';
|
||||
import {API} from '../models/api/api';
|
||||
import {Notes} from '../models/notes/notes';
|
||||
|
||||
export class GroupController extends ControllerHandler {
|
||||
static async newGroup(req, res, next) {
|
||||
let errors = new API.errors(res);
|
||||
|
||||
|
||||
next()
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,3 +4,4 @@ Controllers.UserController = require('./userController').UserController;
|
||||
Controllers.LoginController = require('./loginController').LoginController;
|
||||
Controllers.PermaLinkController = require('./permaLinkController').PermaLinkController;
|
||||
Controllers.NoteController = require('./noteController').NoteController;
|
||||
Controllers.GroupController = require('./groupController').GroupController;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import {Logger} from '../models/logger';
|
||||
import {ControllerHandler} from './controllerHandler';
|
||||
import {API} from '../models/api/api';
|
||||
import {Database} from '../models/database/database'
|
||||
import {Notes} from '../models/notes/notes';
|
||||
|
||||
export class NoteController extends ControllerHandler {
|
||||
@@ -33,20 +31,27 @@ export class NoteController extends ControllerHandler {
|
||||
let id = await Notes.genID();
|
||||
|
||||
let success;
|
||||
|
||||
if (!group) {
|
||||
await Notes.newNote(id, content, creatorid, order);
|
||||
success = await Notes.newNote(id, content, creatorid, order);
|
||||
} else {
|
||||
let doesExist = await Notes.doesGroupExist();
|
||||
let doesExist = await Notes.doesGroupExist(user.id, parentgroup);
|
||||
if (!doesExist) {
|
||||
errors.addError(422, 'Unprocessable entity', 'The group you are trying to create this note in does not exist');
|
||||
errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist');
|
||||
errors.endpoint();
|
||||
next();
|
||||
return;
|
||||
}
|
||||
await Notes.newGroupedNote(id, content, creatorid, order, parentgroup);
|
||||
success = await Notes.newGroupedNote(id, content, creatorid, order, parentgroup);
|
||||
}
|
||||
|
||||
if (success == -1) {
|
||||
errors.addError(500, 'Internal server error');
|
||||
errors.endpoint();
|
||||
next();
|
||||
return;
|
||||
}
|
||||
|
||||
new API.note(res, user, id, content, order, parentgroup).endpoint();
|
||||
next();
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ export class PermaLinkController extends ControllerHandler {
|
||||
static async unauthentacatedPermaLink(req, res, next) {
|
||||
let errors = new API.errors(res);
|
||||
|
||||
let text = req.body.text || undefined;
|
||||
if (!text) {
|
||||
let text = req.body.content || undefined;
|
||||
if (!content) {
|
||||
errors.addError(422, 'Unprocessable entity', 'There is no text');
|
||||
errors.endpoint();
|
||||
next();
|
||||
@@ -19,7 +19,7 @@ export class PermaLinkController extends ControllerHandler {
|
||||
let uid = await PermaLink.genUID() || new Date().getTime();
|
||||
let endpoint = await PermaLink.genEndpoint();
|
||||
|
||||
let success = await Database.permalink.newNote(uid, endpoint, text);
|
||||
let success = await Database.permalink.newNote(uid, endpoint, content);
|
||||
|
||||
if (success == -1) {
|
||||
errors.addError(500, 'Internal server error');
|
||||
@@ -28,7 +28,7 @@ export class PermaLinkController extends ControllerHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
new API.permalink(res, text, uid, endpoint).endpoint();
|
||||
new API.permalink(res, content, uid, endpoint).endpoint();
|
||||
next();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ export class Router {
|
||||
app.get('/note/:endpoint', [MiddleWare.RateLimits.request, Controllers.PermaLinkController.getNote]);
|
||||
|
||||
app.post('/auth/note', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser, Controllers.NoteController.newNote]); // Passes through auth middleware which if authenticated passes user obj and token to the note handling function for it to deal with
|
||||
app.post('/auth/group', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
|
||||
app.post('/auth/group', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser, Controllers.GroupController.newGroup]);
|
||||
|
||||
app.get('/auth/getallnotes', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
|
||||
app.get('/auth/getallgroups', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
|
||||
|
||||
@@ -1,5 +1,34 @@
|
||||
import {API} from './API';
|
||||
|
||||
export class NoteAPI extends API {
|
||||
constructor(res, user, id, content, order, parentgroup) {
|
||||
super();
|
||||
|
||||
this.res = res;
|
||||
this.response = {
|
||||
status: {
|
||||
error: false,
|
||||
code: 201,
|
||||
type: 'created',
|
||||
message: 'Success'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
status: 'Resource created',
|
||||
note: {
|
||||
uid: id,
|
||||
text: content,
|
||||
order: order,
|
||||
parentgroup: parentgroup,
|
||||
createdby: user.username,
|
||||
id: user.id
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
endpoint() {
|
||||
this.res.status(201).end(JSON.stringify(this.response, false, 4));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import {API} from './API';
|
||||
import {PermaLink} from '../../models/permalinks/permalink';
|
||||
|
||||
export class PermaLinkAPI extends API {
|
||||
constructor(res, text, uid, endpoint, username, id) {
|
||||
constructor(res, content, uid, endpoint, username, id) {
|
||||
super();
|
||||
this.res = res;
|
||||
this.response = {
|
||||
@@ -18,7 +18,7 @@ export class PermaLinkAPI extends API {
|
||||
note: {
|
||||
uid: uid,
|
||||
endpoint: `/api/note/${endpoint}`,
|
||||
text: text,
|
||||
content: content,
|
||||
createdby: username,
|
||||
id: id
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user