/* Copyright (c) 2022 Betim Beja and Shko Online LLC Licensed under the MIT license. */ import alasql from 'alasql'; export const CREATE_TABLE_METADATA_OPTIONSET = ` CREATE TABLE Metadata__Optionset( OptionSetId UniqueIdentifier PRIMARY KEY, LogicalName string, IsCustomOptionSet bit, OptionSetType int ) `; export const INSERT_METADATA_OPTIONSET = ` INSERT INTO Metadata__Optionset VALUES ( ?, ?, ?, ? ) `; export const SELECT_METADATA_OPTIONSET = ` SELECT OptionSetId, LogicalName, IsCustomOptionSet, OptionSetType FROM Metadata__Optionset WHERE OptionSetId = ? `; export const CREATE_TABLE_METADATA_OPTIONSET_OPTION = ` CREATE TABLE Metadata__Optionset_Option( [OptionId] UniqueIdentifier PRIMARY KEY, [OptionSetId] UniqueIdentifier, [Color] string NULL, [Value] int, [Label] string, [Description] string NULL, [DefaultStatus] int NULL, [State] int NULL ) `; export const INSERT_METADATA_OPTIONSET_OPTION = ` INSERT INTO Metadata__Optionset_Option VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) `; export const SELECT_METADATA_OPTIONSET_OPTION = ` SELECT OptionId, OptionSetId, Color, [Value], Label, Description, DefaultStatus, State FROM Metadata__Optionset_Option WHERE OptionSetId = ? `; export interface OptionSet { OptionSetId: string; LogicalName: string; IsCustomOptionSet: boolean; OptionSetType: number; } export interface OptionSetOption { OptionId: string; OptionSetId: string; Color?: string; Value: number; Label: string; Description?: string; DefaultStatus?: number; State?: number; } export class OptionSetMetadataSQL { sql: typeof alasql; constructor(sql: typeof alasql) { this.sql = sql; sql(CREATE_TABLE_METADATA_OPTIONSET); sql(CREATE_TABLE_METADATA_OPTIONSET_OPTION); } AddOptionSetMetadata(metadata: OptionSet) { return this.sql(INSERT_METADATA_OPTIONSET, [ metadata.OptionSetId, metadata.LogicalName, metadata.IsCustomOptionSet, metadata.OptionSetType, ]); } SelectOptionSetMetadata(OptionSetId: string) { return this.sql(SELECT_METADATA_OPTIONSET, [OptionSetId]) as OptionSet[]; } AddOptionMetadata(metadata: OptionSetOption) { return this.sql(INSERT_METADATA_OPTIONSET_OPTION, [ metadata.OptionId, metadata.OptionSetId, metadata.Color, metadata.Value, metadata.Label, metadata.Description, metadata.DefaultStatus, metadata.State, ]); } SelectOptionSetOptionMetadata(OptionSetId: string) { return this.sql(SELECT_METADATA_OPTIONSET_OPTION, [OptionSetId]) as OptionSetOption[]; } }