@fivetrandevelopers/zetasql
Version:
ZetaSQL gRPC server and client
48 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LanguageOptions = void 0;
const ZetaSQLClient_1 = require("./ZetaSQLClient");
class LanguageOptions {
constructor() {
this.options = {};
}
static async getMaxFeatures() {
if (!LanguageOptions.maxFeatures) {
const request = {
maximumFeatures: true,
};
LanguageOptions.maxFeatures = await ZetaSQLClient_1.ZetaSQLClient.getInstance().getLanguageOptions(request);
}
return LanguageOptions.maxFeatures;
}
async setLanguageVersion(version) {
this.setEnabledLanguageFeatures(await LanguageOptions.getLanguageFeaturesForVersion(version));
}
static async getLanguageFeaturesForVersion(languageVersion) {
const features = new Set();
(await ZetaSQLClient_1.ZetaSQLClient.getInstance().getLanguageOptions({ languageVersion }))?.enabledLanguageFeatures.forEach(f => features.add(f));
return features;
}
async enableMaximumLanguageFeatures() {
const features = new Set();
(await LanguageOptions.getMaxFeatures())?.enabledLanguageFeatures.forEach(f => features.add(f));
this.setEnabledLanguageFeatures(features);
return this;
}
enableLanguageFeature(feature) {
if (!this.options.enabledLanguageFeatures?.includes(feature)) {
this.options.enabledLanguageFeatures?.push(feature);
}
}
setEnabledLanguageFeatures(enabledLanguageFeatures) {
this.options.enabledLanguageFeatures = [];
enabledLanguageFeatures.forEach(f => {
this.options.enabledLanguageFeatures?.push(f);
});
}
serialize() {
return this.options;
}
}
exports.LanguageOptions = LanguageOptions;
//# sourceMappingURL=LanguageOptions.js.map