56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
"use strict";
|
|
const { classToInvokable } = require("./utils");
|
|
class ABSTRACT {
|
|
static toString(...args) {
|
|
return new this().toString(...args);
|
|
}
|
|
toString(...args) {
|
|
return this.toSql(...args);
|
|
}
|
|
toSql() {
|
|
throw new Error("toSql implementation missing");
|
|
}
|
|
}
|
|
class INITIALLY_DEFERRED extends ABSTRACT {
|
|
toSql() {
|
|
return "DEFERRABLE INITIALLY DEFERRED";
|
|
}
|
|
}
|
|
class INITIALLY_IMMEDIATE extends ABSTRACT {
|
|
toSql() {
|
|
return "DEFERRABLE INITIALLY IMMEDIATE";
|
|
}
|
|
}
|
|
class NOT extends ABSTRACT {
|
|
toSql() {
|
|
return "NOT DEFERRABLE";
|
|
}
|
|
}
|
|
class SET_DEFERRED extends ABSTRACT {
|
|
constructor(constraints) {
|
|
super();
|
|
this.constraints = constraints;
|
|
}
|
|
toSql(queryGenerator) {
|
|
return queryGenerator.setDeferredQuery(this.constraints);
|
|
}
|
|
}
|
|
class SET_IMMEDIATE extends ABSTRACT {
|
|
constructor(constraints) {
|
|
super();
|
|
this.constraints = constraints;
|
|
}
|
|
toSql(queryGenerator) {
|
|
return queryGenerator.setImmediateQuery(this.constraints);
|
|
}
|
|
}
|
|
const Deferrable = {
|
|
INITIALLY_DEFERRED: classToInvokable(INITIALLY_DEFERRED),
|
|
INITIALLY_IMMEDIATE: classToInvokable(INITIALLY_IMMEDIATE),
|
|
NOT: classToInvokable(NOT),
|
|
SET_DEFERRED: classToInvokable(SET_DEFERRED),
|
|
SET_IMMEDIATE: classToInvokable(SET_IMMEDIATE)
|
|
};
|
|
module.exports = Deferrable;
|
|
//# sourceMappingURL=deferrable.js.map
|