Notes endpoint complete, back to working on model abstractions

This commit is contained in:
Ben
2018-09-25 16:57:54 +01:00
parent 7a21961ab9
commit 26b5f2902c
7 changed files with 66 additions and 15 deletions

View 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()
}
}

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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]);

View File

@@ -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));
}
}

View File

@@ -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
}