package com.nvlad.yii2support.common;
import org.jetbrains.annotations.NotNull;
/**
* Created by oleg on 06.04.2017.
*/
public class VirtualProperty {
private String name;
private String type;
private String comment;
private String prevColumn;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getPrevColumn() {
return prevColumn;
}
public void setPrevColumn(String prevColumn) {
this.prevColumn = prevColumn;
}
public VirtualProperty(String name, String typeName, String typeFull, String comment, String prevColumn) {
this.name = name;
this.type = DbTypeToSql(typeName);
this.comment = comment != null ? comment : "";
if (! typeName.contains("text")) {
this.comment = "[" + typeFull + "] " + this.comment;
}
this.prevColumn = prevColumn;
}
@NotNull
private String DbTypeToSql(String type) {
switch (type.toUpperCase()) {
case "INT": return "int";
case "TINYINT": return "bool";
case "BOOLEAN": return "bool";
case "BIGINT": return "int";
case "SMALLINT": return "int";
case "NUMERIC": return "int";
case "MEDIUMINT": return "int";
case "SMALLSERIAL": return "int";
case "SERIAL": return "int";
case "BIGSERIAL": return "int";
case "FLOAT": return "float";
case "REAL": return "float";
case "DOUBLE PRECISION": return "float";
case "DOUBLE": return "float";
case "TIMESTAMP": return "int";
}
return "string";
}
}