@eggjs/dal-runtime
Version:
tegg dal decorator
93 lines • 7.9 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateUtil = void 0;
const node_path_1 = __importDefault(require("node:path"));
const dal_1 = require("@eggjs/tegg/dal");
const tegg_types_1 = require("@eggjs/tegg-types");
class TemplateUtil {
static isSpatialType(columnModel) {
switch (columnModel.type.type) {
case tegg_types_1.ColumnType.GEOMETRY:
case tegg_types_1.ColumnType.POINT:
case tegg_types_1.ColumnType.LINESTRING:
case tegg_types_1.ColumnType.POLYGON:
case tegg_types_1.ColumnType.MULTIPOINT:
case tegg_types_1.ColumnType.MULTILINESTRING:
case tegg_types_1.ColumnType.MULTIPOLYGON:
case tegg_types_1.ColumnType.GEOMETRYCOLLECTION: {
return true;
}
default: {
return false;
}
}
}
static importPath(tableModelPath, currentPath) {
return node_path_1.default.relative(currentPath, tableModelPath);
}
static dbTypeToTsType(columnType) {
return `ColumnTsType['${columnType}']`;
}
static toJson(value) {
return JSON.stringify(JSON.stringify(value));
}
static toPoint(point) {
if (typeof point.x !== 'number' || typeof point.y !== 'number') {
throw new Error(`invalidate point ${JSON.stringify(point)}`);
}
return `Point(${point.x}, ${point.y})`;
}
static toLine(val) {
const points = val.map(t => TemplateUtil.toPoint(t));
return `LINESTRING(${points.join(',')})`;
}
static toPolygon(val) {
const lines = val.map(t => TemplateUtil.toLine(t));
return `POLYGON(${lines.join(',')})`;
}
static toGeometry(val) {
const type = dal_1.SpatialHelper.getGeometryType(val);
const filterName = TemplateUtil.getSpatialFilter(type);
return TemplateUtil[filterName](val);
}
static toMultiPoint(val) {
const points = val.map(t => TemplateUtil.toPoint(t));
return `MULTIPOINT(${points.join(',')})`;
}
static toMultiLine(val) {
const lines = val.map(t => TemplateUtil.toLine(t));
return `MULTILINESTRING(${lines.join(',')})`;
}
static toMultiPolygon(val) {
const polygon = val.map(t => TemplateUtil.toPolygon(t));
return `MULTIPOLYGON(${polygon.join(',')})`;
}
static toGeometryCollection(val) {
const geometries = val.map(t => {
return TemplateUtil.toGeometry(t);
});
return `GEOMETRYCOLLECTION(${geometries.join(',')})`;
}
static getSpatialFilter(columnType) {
const filter = TemplateUtil.spatialFilter[columnType];
if (!filter) {
throw new Error(`type ${columnType} is not spatial type`);
}
return filter;
}
}
exports.TemplateUtil = TemplateUtil;
TemplateUtil.spatialFilter = {
[tegg_types_1.ColumnType.POINT]: 'toPoint',
[tegg_types_1.ColumnType.LINESTRING]: 'toLine',
[tegg_types_1.ColumnType.POLYGON]: 'toPolygon',
[tegg_types_1.ColumnType.GEOMETRY]: 'toGeometry',
[tegg_types_1.ColumnType.MULTIPOINT]: 'toMultiPoint',
[tegg_types_1.ColumnType.MULTILINESTRING]: 'toMultiLine',
[tegg_types_1.ColumnType.MULTIPOLYGON]: 'toMultiPolygon',
[tegg_types_1.ColumnType.GEOMETRYCOLLECTION]: 'toGeometryCollection',
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVtcGxhdGVVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RlbXBsYXRlVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBNkI7QUFDN0IseUNBQTZEO0FBQzdELGtEQUErQztBQVkvQyxNQUFhLFlBQVk7SUFDdkIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUF3QjtRQUMzQyxRQUFRLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsS0FBSyx1QkFBVSxDQUFDLFFBQVEsQ0FBQztZQUN6QixLQUFLLHVCQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3RCLEtBQUssdUJBQVUsQ0FBQyxVQUFVLENBQUM7WUFDM0IsS0FBSyx1QkFBVSxDQUFDLE9BQU8sQ0FBQztZQUN4QixLQUFLLHVCQUFVLENBQUMsVUFBVSxDQUFDO1lBQzNCLEtBQUssdUJBQVUsQ0FBQyxlQUFlLENBQUM7WUFDaEMsS0FBSyx1QkFBVSxDQUFDLFlBQVksQ0FBQztZQUM3QixLQUFLLHVCQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFzQixFQUFFLFdBQW1CO1FBQzNELE9BQU8sbUJBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQXNCO1FBQzFDLE9BQU8saUJBQWlCLFVBQVUsSUFBSSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVU7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FB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