import { getPaddedName } from '@/utils'; import frappe from 'frappe'; import Doc from 'frappe/model/doc'; export default class NumberSeries extends Doc { validate() { const current = this.get('current') as number | null; if (current) { this.current = this.get('start'); } } async next(schemaName: string) { this.validate(); const exists = await this.checkIfCurrentExists(schemaName); if (!exists) { return this.getPaddedName(this.current as number); } this.current = (this.current as number) + 1; await this.update(); return this.getPaddedName(this.current as number); } async checkIfCurrentExists(schemaName: string) { if (!schemaName) { return true; } const name = this.getPaddedName(this.current as number); return await frappe.db.exists(schemaName, name); } getPaddedName(next: number): string { return getPaddedName(this.name, next, this.padZeros); } }