42 lines
989 B
JavaScript
42 lines
989 B
JavaScript
import OrderedObject from "./OrderedObject.js"
|
|
import { z } from 'zod';
|
|
|
|
export default class Payments extends OrderedObject {
|
|
|
|
schema = z.object({
|
|
id: z.number(),
|
|
name: z.string(),
|
|
email: z.string(),
|
|
time: z.string(),
|
|
amount: z.number(),
|
|
product: z.string(),
|
|
})
|
|
|
|
save(payment) {
|
|
let id = `PAYMENT-${payment.id}`
|
|
let result = this.schema.safeParse(payment)
|
|
if(result.success) {
|
|
try {
|
|
super.add(id, payment)
|
|
} catch(e) {
|
|
console.error(e)
|
|
throw e
|
|
}
|
|
} else {
|
|
console.error(result.error)
|
|
throw new global.ServerError(400, "Invalid Member Data!");
|
|
}
|
|
}
|
|
|
|
add(paymentObj) {
|
|
let toSave = {
|
|
id: this.entries.length+1,
|
|
...paymentObj
|
|
}
|
|
this.save(toSave)
|
|
}
|
|
|
|
get(id) {
|
|
return this.entries[this.ids[`PAYMENT-${id}`]]
|
|
}
|
|
} |