sequelize-ts-boilerplate
Version:
A REST API scaffolding tool designed to scale and easily generate CRUD endpoints based on database schema design
41 lines (35 loc) • 1.58 kB
text/typescript
import { CONSTANT } from "./constants";
class DbTypes {
public getType = (dialect: string, dbType: string) => {
switch(dialect) {
case "mssql":
return this._sqlServer(dbType);
break;
case "mysql":
return this._mySql(dbType);
break;
default:
throw new Error(`this code generation tool has not been configured for <${dialect}>`);
break;
}
}
private _mySql = (value: string) => {
let lowerCaseDbType = value.toLowerCase();
if (lowerCaseDbType.startsWith("int") || lowerCaseDbType.startsWith("bigint") || lowerCaseDbType.includes("decimal")) return "number";
else if (lowerCaseDbType.startsWith("longtext") ||
lowerCaseDbType.startsWith("varchar") ||
lowerCaseDbType.startsWith("nvarchar") ||
lowerCaseDbType.startsWith("mediumtext") ||
lowerCaseDbType.startsWith("shorttext")
) return "string";
else if (lowerCaseDbType.includes("date") || lowerCaseDbType.includes("time")) return "Date";
else if (lowerCaseDbType.includes("tinyint") || lowerCaseDbType.includes("bit")) return "boolean";
else {
console.log("Type not registered (please make PR and add this property): ", value);
}
}
private _sqlServer = (value: string) => {
return CONSTANT.MSSQL_DATATYPES_MAP[value];
}
}
export default new DbTypes();