@shko.online/componentframework-mock
Version:
Mocking library to help with testing PowerApps Component Framework Components
125 lines (116 loc) • 3.53 kB
text/typescript
/*
Copyright (c) 2022 Betim Beja and Shko Online LLC
Licensed under the MIT license.
*/
import type { ShkoOnline } from '../../../ShkoOnline';
import alasql from 'alasql';
export const CREATE_TABLE_METADATA_ATTRIBUTE = `
CREATE TABLE Metadata__Attribute(
EntityId UniqueIdentifier,
AttributeId UniqueIdentifier PRIMARY KEY,
LogicalName string,
AttributeType int,
DefaultFormValue int NULL,
OptionSetId UniqueIdentifier,
AttributeOf string NULL,
AttributeTypeName string
)
`;
export const INSERT_METADATA_ATTRIBUTE = `
INSERT INTO Metadata__Attribute VALUES (
?,
?,
?,
?,
?,
?,
?,
?
)
`;
export const SELECT_METADATA_ATTRIBUTE = `
SELECT
E.LogicalName as EntityLogicalName,
AttributeId,
A.LogicalName as LogicalName,
AttributeType,
DefaultFormValue,
OptionSetId,
AttributeOf,
AttributeTypeName
FROM
Metadata__Attribute A
INNER JOIN
Metadata__Entity E ON A.EntityId=E.EntityId
WHERE A.LogicalName = ? AND E.LogicalName = ?
`;
export const SELECT_METADATA_ATTRIBUTE_BY_ID = `
SELECT
E.LogicalName as EntityLogicalName,
AttributeId,
A.LogicalName as LogicalName,
AttributeType,
DefaultFormValue,
OptionSetId,
AttributeOf,
AttributeTypeName
FROM
Metadata__Attribute A
INNER JOIN
Metadata__Entity E ON A.EntityId=E.EntityId
WHERE A.AttributeId = ?
`;
export const SELECT_METADATA_ATTRIBUTES = `
SELECT
E.LogicalName as EntityLogicalName,
AttributeId,
A.LogicalName as LogicalName,
AttributeType,
DefaultFormValue,
OptionSetId,
AttributeOf,
AttributeTypeName
FROM
Metadata__Attribute AS A
INNER JOIN
Metadata__Entity AS E ON A.EntityId=E.EntityId
WHERE E.LogicalName = ?
`;
export interface AttributeDB {
EntityId: string;
AttributeId: string;
LogicalName: string;
AttributeType: ShkoOnline.AttributeType;
AttributeTypeName: string;
DefaultFormValue?: number;
OptionSetId?: string;
AttributeOf?: string;
}
export class AttributeMetadataSQL {
sql: typeof alasql;
constructor(sql: typeof alasql) {
this.sql = sql;
sql(CREATE_TABLE_METADATA_ATTRIBUTE);
}
AddAttributeMetadata(metadata: AttributeDB) {
this.sql(INSERT_METADATA_ATTRIBUTE, [
metadata.EntityId,
metadata.AttributeId,
metadata.LogicalName,
metadata.AttributeType,
metadata.DefaultFormValue,
metadata.OptionSetId,
metadata.AttributeOf,
metadata.AttributeTypeName,
]);
}
SelectAttributeMetadata(AttributeLogicalName: string, EntityLogicalName: string) {
return this.sql(SELECT_METADATA_ATTRIBUTE, [AttributeLogicalName, EntityLogicalName]) as AttributeDB[];
}
SelectAttributeMetadataById(AttributeId: string) {
return this.sql(SELECT_METADATA_ATTRIBUTE, [AttributeId]) as AttributeDB[];
}
SelectAttributeMetadataForTable(EntityLogicalName: string) {
return this.sql(SELECT_METADATA_ATTRIBUTES, [EntityLogicalName]) as AttributeDB[];
}
}