Files
note-service-server/src/controllers/permaNoteController.js

49 lines
1.4 KiB
JavaScript

import {Logger} from '../models/logger';
import {ControllerHandler} from './controllerHandler';
import {API} from './api/api';
import {Database} from '../models/database/database'
import {PermaLink} from '../models/permalinks/permalink';
export class PermaNoteController extends ControllerHandler {
static async newPermaNote(req, res, next) {
const errors = new API.errors(res);
const content = req.body.content || undefined;
if (!content) {
errors.addError(422, 'Unprocessable entity', 'There is no content');
errors.endpoint();
return;
}
const uid = await PermaLink.genUID() || new Date().getTime();
const endpoint = await PermaLink.genEndpoint();
const success = await Database.PermaNotes.newNote(uid, endpoint, content);
if (success == -1) {
errors.addError(500, 'Internal server error');
errors.endpoint();
return;
}
new API.permalink(res, content, uid, endpoint).endpoint();
next();
}
static async getPermaNote(req, res, next) {
const endpoint = req.params.endpoint || undefined;
if (!endpoint) {
return;
}
const data = await Database.PermaNotes.getNoteByEndpoint(endpoint);
if (data == -1) {
res.status(404).end('404 Not Found');
return;
}
res.end(data.text);
next();
}
}