Implemented POST / PATCH / DELETE for alertcontact api route
This commit is contained in:
parent
94034fa29f
commit
7715672802
@ -2,7 +2,7 @@ import { Request, Response } from 'express';
|
|||||||
import db, { handlePrismaError } from '../../../handlers/db.js'; // Database
|
import db, { handlePrismaError } from '../../../handlers/db.js'; // Database
|
||||||
import log from '../../../handlers/log.js';
|
import log from '../../../handlers/log.js';
|
||||||
import { parseIntOrUndefined, parseDynamicSortBy } from '../../../helpers/prisma_helpers.js';
|
import { parseIntOrUndefined, parseDynamicSortBy } from '../../../helpers/prisma_helpers.js';
|
||||||
import { schema_get, schema_post } from './alertContacts_schema.js';
|
import { schema_get, schema_post, schema_patch, schema_del } from './alertContacts_schema.js';
|
||||||
|
|
||||||
// MARK: GET alertContact
|
// MARK: GET alertContact
|
||||||
async function get(req: Request, res: Response) {
|
async function get(req: Request, res: Response) {
|
||||||
@ -63,30 +63,69 @@ async function post(req: Request, res: Response) {
|
|||||||
res.status(400).json({ status: 'ERROR', errorcode: 'VALIDATION_ERROR', message: error.details[0].message });
|
res.status(400).json({ status: 'ERROR', errorcode: 'VALIDATION_ERROR', message: error.details[0].message });
|
||||||
} else {
|
} else {
|
||||||
log.api?.debug('alertContact POST Success:', req.body, value);
|
log.api?.debug('alertContact POST Success:', req.body, value);
|
||||||
|
await db.alertContacts
|
||||||
// // Check if undefined or null
|
.create({
|
||||||
// if (req.body.name != null && req.body.phone != null) {
|
data: {
|
||||||
await db.alertContacts
|
name: value.name,
|
||||||
.create({
|
phone: value.phone,
|
||||||
data: {
|
comment: value.comment
|
||||||
name: value.name,
|
},
|
||||||
phone: value.phone,
|
select: {
|
||||||
comment: value.comment
|
id: true
|
||||||
},
|
}
|
||||||
select: {
|
})
|
||||||
id: true
|
.then((result) => {
|
||||||
}
|
res.status(201).json({ status: 'CREATED', message: 'Successfully created alertContact', id: result.id });
|
||||||
})
|
});
|
||||||
.then((result) => {
|
|
||||||
res.status(201).json({ status: 'CREATED', message: 'Successfully created alertContact', id: result.id });
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: UPDATE alertContact
|
// MARK: UPDATE alertContact
|
||||||
async function patch(req: Request, res: Response) {}
|
async function patch(req: Request, res: Response) {
|
||||||
|
const { error, value } = schema_patch.validate(req.body);
|
||||||
|
if (error) {
|
||||||
|
log.api?.debug('alertContact PATCH Error:', req.body, value, error.details[0].message);
|
||||||
|
res.status(400).json({ status: 'ERROR', errorcode: 'VALIDATION_ERROR', message: error.details[0].message });
|
||||||
|
} else {
|
||||||
|
log.api?.debug('alertContact PATCH Success:', req.body, value);
|
||||||
|
await db.alertContacts
|
||||||
|
.update({
|
||||||
|
where: {
|
||||||
|
id: value.id
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
name: value.name,
|
||||||
|
phone: value.phone,
|
||||||
|
comment: value.comment
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
id: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((result) => {
|
||||||
|
res.status(200).json({ status: 'UPDATED', message: 'Successfully updated alertContact', id: result.id });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: DELETE alertContact
|
// MARK: DELETE alertContact
|
||||||
async function del(req: Request, res: Response) {}
|
async function del(req: Request, res: Response) {
|
||||||
|
const { error, value } = schema_del.validate(req.body);
|
||||||
|
if (error) {
|
||||||
|
log.api?.debug('alertContact DELETE Error:', req.body, value, error.details[0].message);
|
||||||
|
res.status(400).json({ status: 'ERROR', errorcode: 'VALIDATION_ERROR', message: error.details[0].message });
|
||||||
|
} else {
|
||||||
|
log.api?.debug('alertContact DELETE Success:', req.body, value);
|
||||||
|
await db.alertContacts
|
||||||
|
.delete({
|
||||||
|
where: {
|
||||||
|
id: value.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((result) => {
|
||||||
|
res.status(200).json({ status: 'DELETED', message: 'Successfully deleted alertContact', id: result.id });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default { get, post, patch, del };
|
export default { get, post, patch, del };
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import validator from 'joi'; // DOCS: https://joi.dev/api
|
import validator from 'joi'; // DOCS: https://joi.dev/api
|
||||||
import log from '../../../handlers/log.js';
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: GET alertContact
|
||||||
const schema_get = validator.object({
|
const schema_get = validator.object({
|
||||||
sort: validator.string().valid('id', 'name', 'phone', 'comment').default('id'),
|
sort: validator.string().valid('id', 'name', 'phone', 'comment').default('id'),
|
||||||
order: validator.string().valid('asc', 'desc').default('asc'),
|
order: validator.string().valid('asc', 'desc').default('asc'),
|
||||||
@ -11,42 +10,40 @@ const schema_get = validator.object({
|
|||||||
count: validator.boolean()
|
count: validator.boolean()
|
||||||
}).nand('id', 'search'); // Allow id or search. not both.
|
}).nand('id', 'search'); // Allow id or search. not both.
|
||||||
|
|
||||||
|
// MARK: CREATE alertContact
|
||||||
const schema_post = validator.object({
|
const schema_post = validator.object({
|
||||||
name: validator.string().min(1).max(32).required(),
|
name: validator.string().min(1).max(32).required(),
|
||||||
phone: validator.string().pattern(new RegExp('^\\+(\\d{1,3})\\s*(?:\\(\\s*(\\d{2,5})\\s*\\)|\\s*(\\d{2,5})\\s*)\\s*(\\d{5,15})$')).required(),
|
phone: validator.string().pattern(new RegExp('^\\+(\\d{1,3})\\s*(?:\\(\\s*(\\d{2,5})\\s*\\)|\\s*(\\d{2,5})\\s*)\\s*(\\d{5,15})$')).required(),
|
||||||
comment: validator.string().max(64),
|
comment: validator.string().max(64),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// MARK: UPDATE alertContact
|
||||||
const schema_patch = validator.object({
|
const schema_patch = validator.object({
|
||||||
sort: validator.string().valid('id', 'name', 'phone', 'comment').default('id'),
|
id: validator.number().positive().precision(0).required(),
|
||||||
order: validator.string().valid('asc', 'desc').default('asc'),
|
name: validator.string().min(1).max(32),
|
||||||
search: validator.string().min(3).max(20), // TODO: Check if * or ** or *** -> Due to crashes..
|
phone: validator.string().pattern(new RegExp('^\\+(\\d{1,3})\\s*(?:\\(\\s*(\\d{2,5})\\s*\\)|\\s*(\\d{2,5})\\s*)\\s*(\\d{5,15})$')),
|
||||||
id: validator.number().positive().precision(0),
|
comment: validator.string().max(64),
|
||||||
count: validator.boolean()
|
}).or('name', 'phone', 'comment')
|
||||||
}).nand('id', 'search'); // Allow id or search. not both.
|
|
||||||
|
|
||||||
|
// MARK: DELETE alertContact
|
||||||
const schema_del = validator.object({
|
const schema_del = validator.object({
|
||||||
sort: validator.string().valid('id', 'name', 'phone', 'comment').default('id'),
|
id: validator.number().positive().precision(0).required()
|
||||||
order: validator.string().valid('asc', 'desc').default('asc'),
|
})
|
||||||
search: validator.string().min(3).max(20), // TODO: Check if * or ** or *** -> Due to crashes..
|
|
||||||
id: validator.number().positive().precision(0),
|
|
||||||
count: validator.boolean()
|
|
||||||
}).nand('id', 'search'); // Allow id or search. not both.
|
|
||||||
|
|
||||||
// Describe all schemas
|
// Describe all schemas
|
||||||
const schema_get_describe = schema_get.describe();
|
const schema_get_desc = schema_get.describe();
|
||||||
const schema_post_describe = schema_post.describe();
|
const schema_post_desc = schema_post.describe();
|
||||||
const schema_patch_describe = schema_patch.describe();
|
const schema_patch_desc = schema_patch.describe();
|
||||||
const schema_del_describe = schema_del.describe();
|
const schema_del_desc = schema_del.describe();
|
||||||
|
|
||||||
|
|
||||||
// GET route
|
// GET route
|
||||||
export default async function get(req: Request, res: Response) {
|
export default async function get(req: Request, res: Response) {
|
||||||
res.status(200).json({
|
res.status(200).json({
|
||||||
GET: schema_get_describe,
|
GET: schema_get_desc,
|
||||||
POST: schema_post_describe,
|
POST: schema_post_desc,
|
||||||
PATCH: schema_patch_describe,
|
PATCH: schema_patch_desc,
|
||||||
DELETE: schema_del_describe
|
DELETE: schema_del_desc
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user