UNPKG

shopify-express-remix-app

Version:

A boilerplate for building Shopify apps using Express and Remix

116 lines (100 loc) 3.52 kB
import prisma from "../config/db.js" import {BindMethods} from "../utility/bindMethods.js" import { userValidator } from "./validator/userValidator.js" import Return from "../utility/returnProcessor.js" export class User extends userValidator{ constructor(){ super() } generateUserFilter(req) { try { // Parse filter and orderBy query parameters with error handling this.page = parseInt(req.query.page || 1); this.filter = JSON.parse(req.query.filter) || {}; this.orderBy = JSON.parse(req.query.orderBy) || { createdAt: 'desc' }; } catch (error) { this.filter = {} this.orderBy = { createdAt: 'desc' }; } } async create(req, res, next){ const processor = new Return(res, next) try{ this.data = req.body this.validate(this.data) const result = await prisma.user.create({ data: this.data }) return processor.process({data:result}, 201, "internal server error", 500) }catch(error){ return processor.error(error) } } async getAll(req, res, next){ const processor = new Return(res, next) try{ this.generateSessionFilter(req) // this.sessionFilter // this.page // this.orderBy const result = await prisma.user.findMany({ where:{}, skip: (this.page - 1) * 50, orderBy: this.orderBy }); const data = {data:result, info:{page: this.page, hasNextPage:true, hasPreviousPage: false}} return processor.process(data, 200) }catch(error){ return processor.error(error) } } async get(req, res, next){ const processor = new Return(res, next) try{ const id = req.params.id; const result = await prisma.user.findUnique({ where:{id} }); return processor.process({data:result}, 200) }catch(error){ return processor.error(error) } } async update(req, res, next){ const processor = new Return(res, next) try{ const data = req.body this.validate(data, 1) const id = req.params.id; const result = await prisma.user.update({ where:{id}, data }); return processor.process({data:result}, 201, "internal server error", 500) }catch(error){ return processor.error(error) } } async delete(req, res, next){ const processor = new Return(res, next) try{ const id = req.params.id; const result = await prisma.user.delete({ where:{id} }); return processor.process({data:result}, 201, "internal server error", 500) }catch(error){ return processor.error(error) } } async deleteMany(req, res, next){ const processor = new Return(res, next) try{ this.generateUserFilter(req) const result = await prisma.user.deleteMany({ where: this.filter }); return processor.process({data:result}, 201, "internal server error", 500) }catch(error){ return processor.error(error) } } } const binding = new BindMethods(new User()) export default binding.bindMethods()