ddl-manager
Version:
store postgres procedures and triggers in files
40 lines (32 loc) • 1.17 kB
text/typescript
import { AbstractNode, Cursor, TemplateElement } from "psql-lang";
import { CacheIndex } from "./CacheIndex";
import { CacheWithoutInsertOn } from "./CacheWithoutInsertOn";
import { CacheWithoutTriggersOn } from "./CacheWithoutTriggersOn";
export type CacheOptionRow = {
option: CacheIndex | CacheWithoutInsertOn | CacheWithoutTriggersOn
};
export class CacheOption extends AbstractNode<CacheOptionRow> {
static entry(cursor: Cursor): boolean {
return (
cursor.before(CacheIndex) ||
cursor.before(CacheWithoutInsertOn) ||
cursor.before(CacheWithoutTriggersOn)
);
}
static parse(cursor: Cursor): CacheOptionRow {
const option = this.parseOption(cursor);
return {option};
}
private static parseOption(cursor: Cursor) {
if ( cursor.before(CacheIndex) ) {
return cursor.parse(CacheIndex);
}
if ( cursor.before(CacheWithoutInsertOn) ) {
return cursor.parse(CacheWithoutInsertOn);
}
return cursor.parse(CacheWithoutTriggersOn);
}
template(): TemplateElement[] {
return [this.row.option];
}
}