@underpostnet/underpost
Version:
Underpost Platform — end-to-end CI/CD and application-delivery toolchain CLI. Covers bare metal, Kubernetes, K3s, kubeadm, LXD, container/image orchestration, secrets, databases, cron jobs, monitoring, SSH, runners, PWA + Workbox delivery, and release orc
43 lines (36 loc) • 1.72 kB
JavaScript
import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
import { loggerFactory } from '../../server/logger.js';
import { DataQuery } from '../../server/data-query.js';
const logger = loggerFactory(import.meta);
class DefaultService {
static post = async (req, res, options) => {
/** @type {import('./default.model.js').DefaultModel} */
const Default = DataBaseProviderService.getModel("Default", options);
return await new Default(req.body).save();
};
static get = async (req, res, options) => {
/** @type {import('./default.model.js').DefaultModel} */
const Default = DataBaseProviderService.getModel("Default", options);
if (req.params.id) return await Default.findById(req.params.id);
// Parse query parameters using DataQuery helper
const { query, sort, skip, limit, page } = DataQuery.parse(req.query);
const [data, total] = await Promise.all([
Default.find(query).sort(sort).limit(limit).skip(skip),
Default.countDocuments(query),
]);
const totalPages = Math.ceil(total / limit);
return { data, total, page, totalPages };
};
static put = async (req, res, options) => {
/** @type {import('./default.model.js').DefaultModel} */
const Default = DataBaseProviderService.getModel("Default", options);
return await Default.findByIdAndUpdate(req.params.id, req.body);
};
static delete = async (req, res, options) => {
/** @type {import('./default.model.js').DefaultModel} */
const Default = DataBaseProviderService.getModel("Default", options);
if (req.params.id) return await Default.findByIdAndDelete(req.params.id);
else return await Default.deleteMany();
};
}
export { DefaultService };