in src/table/entity/EntityProperty.ts [113:215]
export function parseEntityProperty(
name: string,
value: any,
edmType?: EdmType | string,
isSystemProperty: boolean = false
): EntityProperty {
if (edmType !== undefined) {
// Validate values per input EdmType
const type = typeof edmType === "string" ? getEdmType(edmType) : edmType;
switch (type) {
case EdmType.Binary:
// EdmBinary.validate(value);
return new EntityProperty(
name,
value,
new EdmBinary(value),
isSystemProperty
);
case EdmType.Boolean:
// EdmBoolean.validate(value);
return new EntityProperty(
name,
value,
new EdmBoolean(value),
isSystemProperty
);
case EdmType.DateTime:
EdmDateTime.validate(value);
return new EntityProperty(
name,
value,
new EdmDateTime(value),
isSystemProperty
);
case EdmType.Double:
const dblval = EdmDouble.validate(value);
return new EntityProperty(
name,
dblval,
new EdmDouble(dblval),
isSystemProperty
);
case EdmType.Guid:
EdmGuid.validate(value);
return new EntityProperty(
name,
value,
new EdmGuid(value),
isSystemProperty
);
case EdmType.Int32:
EdmInt32.validate(value);
return new EntityProperty(
name,
value,
new EdmInt32(value),
isSystemProperty
);
case EdmType.Int64:
EdmInt64.validate(value);
return new EntityProperty(
name,
value,
new EdmInt64(value),
isSystemProperty
);
case EdmType.String:
EdmString.validate(value);
return new EntityProperty(
name,
value,
new EdmString(value),
isSystemProperty
);
default:
throw TypeError(`Invalid EdmType ${type}.`);
}
} else {
// Extract type from value type
switch (typeof value) {
case "string":
EdmString.validate(value);
return new EntityProperty(name, value, new EdmString(value));
case "number":
if (Number.isInteger(value)) {
EdmInt32.validate(value);
return new EntityProperty(name, value, new EdmInt32(value));
} else {
EdmDouble.validate(value);
return new EntityProperty(name, value, new EdmDouble(value));
}
case "boolean":
EdmBoolean.validate(value);
return new EntityProperty(name, value, new EdmBoolean(value));
case "object":
if (value === null) {
return new EntityProperty(name, value, new EdmNull(value));
}
default:
throw TypeError(`Invalid value when parsing EdmType ${value}.`);
}
}
}