mongoose-management
Version:
Mongoose schemas management tool
21 lines (20 loc) • 1.01 kB
TypeScript
import Prompts from '../../prompts';
import AbstractDataset from '../dataset/abstract';
import AbstractMenu from '../menu/abstract';
import { choiceValueType, levelOptionsType } from '../../types';
export default abstract class AbstractLevel<T extends AbstractDataset<P>, S extends AbstractDataset<any>, M extends AbstractMenu<T, S>, P = undefined> {
protected dataset: T;
protected menu: M;
protected options: levelOptionsType;
protected abstract promptCreate: (prompts: Prompts, dataset: T) => Promise<S>;
protected abstract promptEdit: (prompts: Prompts, parent: P, dataset: T) => Promise<T>;
protected prompts: Prompts;
constructor(dataset: T, menu: M, options: levelOptionsType);
showMenu(): Promise<choiceValueType<S>>;
create(action: choiceValueType<S>['action']): Promise<S | undefined>;
edit(dataset: T): Promise<boolean>;
remove(dataset: T): Promise<boolean>;
show(dataset: S): Promise<void>;
exec(): Promise<void>;
run(): Promise<boolean>;
}