const dbTypes = [ "int", "integer", "bigint", "bigserial", "char", "int2", "int4", "int8", "int4range", "int8range", "serial", "serial2", "serial8", "character", "bit", "bool", "boolean", "date", "double precision", "event_trigger", "fdw_handler", "float4", "float8", "uuid", "smallint", "smallserial", "character varying", "text", "real", "time", "time without time zone", "timestamp", "timestamp without time zone", "timestamptz", "timestamp with time zone", "timetz", "time with time zone", "daterange", "json", "jsonb", "gtsvector", "index_am_handler", "anyenum", "anynonarray", "anyrange", "box", "bpchar", "bytea", "cid", "cidr", "circle", "cstring", "inet", "internal", "interval", "language_handler", "line", "lsec", "macaddr", "money", "name", "numeric", "numrange", "oid", "opaque", "path", "pg_ddl_command", "pg_lsn", "pg_node_tree", "point", "polygon", "record", "refcursor", "regclass", "regconfig", "regdictionary", "regnamespace", "regoper", "regoperator", "regproc", "regpreocedure", "regrole", "regtype", "reltime", "smgr", "tid", "tinterval", "trigger", "tsm_handler", "tsquery", "tsrange", "tstzrange", "tsvector", "txid_snapshot", "unknown", "void", "xid", "xml"] export class PgUi { static getNewTableColumns() { return [ { cn: "id", dt: "int4", dtx: "integer", ct: "int(11)", nrqd: false, rqd: true, ck: false, pk: true, un: false, ai: true, cdf: null, clen: null, np: 11, ns: 0, dtxp: '11', dtxs: '', altered: 1, uidt: "ID", uip: "", uicn: "", }, { cn: "title", dt: "character varying", dtx: "specificType", ct: "varchar(45)", nrqd: true, rqd: false, ck: false, pk: false, un: false, ai: false, cdf: null, clen: 45, np: null, ns: null, dtxp: '45', dtxs: '', altered: 1, uidt: 'SingleLineText', uip: "", uicn: "", }, { cn: "created_at", dt: "timestamp", dtx: "specificType", ct: "varchar(45)", nrqd: true, rqd: false, ck: false, pk: false, un: false, ai: false, cdf: 'now()', clen: 45, np: null, ns: null, dtxp: '', dtxs: '', altered: 1, uidt: 'CreateTime', uip: "", uicn: "", }, { cn: "updated_at", dt: "timestamp", dtx: "specificType", ct: "varchar(45)", nrqd: true, rqd: false, ck: false, pk: false, un: false, ai: false, au: true, cdf: 'now()', clen: 45, np: null, ns: null, dtxp: '', dtxs: '', altered: 1, uidt: 'LastModifiedTime', uip: "", uicn: "", } ]; } static getNewColumn(suffix) { return { cn: "title" + suffix, dt: "int4", dtx: "specificType", ct: "integer(11)", nrqd: true, rqd: false, ck: false, pk: false, un: false, ai: false, cdf: null, clen: 45, np: null, ns: null, //data_type_x_specific: ' ', dtxp: '11', dtxs: ' ', altered: 1, uidt: 'Number', uip: "", uicn: "", }; } // static getDefaultLengthForDatatype(type) { // switch (type) { // case "int": // return 11; // break; // case "tinyint": // return 1; // break; // case "smallint": // return 5; // break; // // case "mediumint": // return 9; // break; // case "bigint": // return 20; // break; // case "bit": // return 64; // break; // case "boolean": // return ''; // break; // case "float": // return 12; // break; // case "decimal": // return 10; // break; // case "double": // return 22; // break; // case "serial": // return 20; // break; // case "date": // return ''; // break; // case "datetime": // case "timestamp": // return 6; // break; // case "time": // return ''; // break; // case "year": // return ''; // break; // case "char": // return 255; // break; // case "varchar": // return 45; // break; // case "nchar": // return 255; // break; // case "text": // return ''; // break; // case "tinytext": // return ''; // break; // case "mediumtext": // return ''; // break; // case "longtext": // return '' // break; // case "binary": // return 255; // break; // case "varbinary": // return 65500; // break; // case "blob": // return ''; // break; // case "tinyblob": // return ''; // break; // case "mediumblob": // return ''; // break; // case "longblob": // return ''; // break; // case "enum": // return '\'a\',\'b\''; // break; // case "set": // return '\'a\',\'b\''; // break; // case "geometry": // return ''; // case "point": // return ''; // case "linestring": // return ''; // case "polygon": // return ''; // case "multipoint": // return ''; // case "multilinestring": // return ''; // case "multipolygon": // return ''; // case "json": // return '' // break; // // } // // } static getDefaultLengthForDatatype(type) { switch (type) { case "int": return ''; break; case "tinyint": return ''; break; case "smallint": return ''; break; case "mediumint": return ''; break; case "bigint": return ''; break; case "bit": return ''; break; case "boolean": return ''; break; case "float": return ''; break; case "decimal": return ''; break; case "double": return ''; break; case "serial": return ''; break; case "date": return ''; break; case "datetime": case "timestamp": return ''; break; case "time": return ''; break; case "year": return ''; break; case "char": return ''; break; case "varchar": return ''; break; case "nchar": return ''; break; case "text": return ''; break; case "tinytext": return ''; break; case "mediumtext": return ''; break; case "longtext": return ''; break; case "binary": return ''; break; case "varbinary": return ''; break; case "blob": return ''; break; case "tinyblob": return ''; break; case "mediumblob": return ''; break; case "longblob": return ''; break; case "enum": return ''; break; case "set": return ''; break; case "geometry": return ''; case "point": return ''; case "linestring": return ''; case "polygon": return ''; case "multipoint": return ''; case "multilinestring": return ''; case "multipolygon": return ''; case "json": return ''; break; } } static getDefaultLengthIsDisabled(type) { switch (type) { case "anyenum": case "anynonarray": case "anyrange": case "bigint": case "bigserial": case "bit": case "bool": case "box": case "bpchar": case "bytea": case "char": case "character": case "cid": case "cidr": case "circle": case "cstring": case "date": case "daterange": case "double precision": case "event_trigger": case "fdw_handler": case "float4": case "float8": case "gtsvector": case "index_am_handler": case "inet": case "int": case "int2": case "int4": case "int8": case "int4range": case "int8range": case "integer": case "internal": case "interval": case "json": case "jsonb": case "language_handler": case "line": case "lsec": case "macaddr": case "money": case "name": case "numeric": case "numrange": case "oid": case "opaque": case "path": case "pg_ddl_command": case "pg_lsn": case "pg_node_tree": case "point": case "polygon": case "real": case "record": case "refcursor": case "regclass": case "regconfig": case "regdictionary": case "regnamespace": case "regoper": case "regoperator": case "regproc": case "regpreocedure": case "regrole": case "regtype": case "reltime": case "serial": case "serial2": case "serial8": case "smallint": case "smallserial": case "smgr": case "text": case "tid": case "time": case "time without time zone": case "timestamp": case "timestamp without time zone": case "timestamptz": case "timestamp with time zone": case "timetz": case "time with time zone": case "tinterval": case "trigger": case "tsm_handler": case "tsquery": case "tsrange": case "tstzrange": case "tsvector": case "txid_snapshot": case "unknown": case "void": case "xid": case "xml": case "integer": case "character varying": case "int2": case "int4": case "int8": case "float4": case "float8": case "interval": case "json": case "jsonb": case "jsonb": case "int": case "tinyint": case "smallint": case "mediumint": case "bigint": case "float": case "decimal": case "double": case "real": case "bit": case "boolean": case "serial": case "date": case "datetime": case "timestamp": case "timestamptz": case "timetz": case "time": case "uuid": case "year": case "char": case "varchar": case "nchar": case "text": case "tinytext": case "mediumtext": case "longtext": case "binary": case "varbinary": case "blob": case "tinyblob": case "mediumblob": case "longblob": case "enum": case "set": case "time": case "geometry": case "point": case "linestring": case "polygon": case "multipoint": case "multilinestring": case "multipolygon": case "json": return true; break; } } static getDefaultValueForDatatype(type) { switch (type) { case "anyenum": return "eg: "; break; case "anynonarray": return "eg: "; break; case "anyrange": return "eg: "; break; case "bigint": return "eg: "; break; case "bigserial": return "eg: "; break; case "bit": return "eg: "; break; case "bool": return "eg: "; break; case "box": return "eg: "; break; case "bpchar": return "eg: "; break; case "bytea": return "eg: "; break; case "char": return "eg: "; break; case "character": return "eg: 'sample'"; break; case "cid": return "eg: "; break; case "cidr": return "eg: "; break; case "circle": return "eg: "; break; case "cstring": return "eg: "; break; case "date": return "eg: '2020-09-09'"; break; case "daterange": return "eg: "; break; case "double precision": return "eg: 1.2"; break; case "event_trigger": return "eg: "; break; case "fdw_handler": return "eg: "; break; case "float4": return "eg: 1.2"; break; case "float8": return "eg: 1.2"; break; case "gtsvector": return "eg: "; break; case "index_am_handler": return "eg: "; break; case "inet": return "eg: "; break; case "int": return "eg: "; break; case "int2": return "eg: "; break; case "int4": return "eg: "; break; case "int8": return "eg: "; break; case "int4range": return "eg: "; break; case "int8range": return "eg: "; break; case "integer": return "eg: "; break; case "internal": return "eg: "; break; case "interval": return "eg: "; break; case "json": return "eg: "; break; case "jsonb": return "eg: "; break; case "language_handler": return "eg: "; break; case "line": return "eg: "; break; case "lsec": return "eg: "; break; case "macaddr": return "eg: "; break; case "money": return "eg: "; break; case "name": return "eg: "; break; case "numeric": return "eg: "; break; case "numrange": return "eg: "; break; case "oid": return "eg: "; break; case "opaque": return "eg: "; break; case "path": return "eg: "; break; case "pg_ddl_command": return "eg: "; break; case "pg_lsn": return "eg: "; break; case "pg_node_tree": return "eg: "; break; case "point": return "eg: "; break; case "polygon": return "eg: "; break; case "real": return "eg: 1.2"; break; case "record": return "eg: "; break; case "refcursor": return "eg: "; break; case "regclass": return "eg: "; break; case "regconfig": return "eg: "; break; case "regdictionary": return "eg: "; break; case "regnamespace": return "eg: "; break; case "regoper": return "eg: "; break; case "regoperator": return "eg: "; break; case "regproc": return "eg: "; break; case "regpreocedure": return "eg: "; break; case "regrole": return "eg: "; break; case "regtype": return "eg: "; break; case "reltime": return "eg: "; break; case "serial": return "eg: "; break; case "serial2": return "eg: "; break; case "serial8": return "eg: "; break; case "smallint": return "eg: "; break; case "smallserial": return "eg: "; break; case "smgr": return "eg: "; break; case "text": return "eg: 'sample text'"; break; case "tid": return "eg: "; break; case "time": return "eg: now()\n\n'04:05:06.789'"; break; case "time without time zone": return "eg: now()\n\n'04:05:06.789'"; break; case "timestamp": return "eg: now()\n\n'2016-06-22 19:10:25-07'"; break; case "timestamp without time zone": return "eg: now()\n\n'2016-06-22 19:10:25-07'"; break; case "timestamptz": return "eg: timezone('America/New_York','2016-06-01 00:00')\n\nnow()\n\n'2016-06-22 19:10:25-07'"; break; case "timestamp with time zone": return "eg: now()\n\n'2016-06-22 19:10:25-07'"; break; case "timetz": return "eg: now()"; break; case "time with time zone": return "eg: now()"; break; case "tinterval": return "eg: "; break; case "trigger": return "eg: "; break; case "tsm_handler": return "eg: "; break; case "tsquery": return "eg: "; break; case "tsrange": return "eg: "; break; case "tstzrange": return "eg: "; break; case "tsvector": return "eg: "; break; case "txid_snapshot": return "eg: "; break; case "unknown": return "eg: "; break; case "void": return "eg: "; break; case "xid": return "eg: "; break; case "xml": return "eg: "; break; case "integer": return "eg: "; break; case "character varying": return "eg: "; break; case "int2": return "eg: "; break; case "int4": return "eg: "; break; case "int8": return "eg: "; break; case "float4": return "eg: "; break; case "float8": return "eg: "; break; case "interval": return "eg: "; break; case "json": return "eg: "; break; case "jsonb": return "eg: "; break; case "jsonb": return "eg: "; break; case "int": return "eg: "; break; case "tinyint": return "eg: "; break; case "smallint": return "eg: "; break; case "mediumint": return "eg: "; break; case "bigint": return "eg: "; break; case "float": return "eg: "; break; case "decimal": return "eg: "; break; case "double": return "eg: 1.2"; break; case "real": return "eg: "; break; case "bit": return "eg: "; break; case "boolean": return "eg: true\n\nfalse"; break; case "serial": return "eg: "; break; case "date": return "eg: "; break; case "datetime": return "eg: "; break; case "timestamp": return "eg: "; break; case "timestamptz": return "eg: "; break; case "timetz": return "eg: "; break; case "time": return "eg: "; break; case "uuid": return "eg: "; break; case "year": return "eg: "; break; case "char": return "eg: 'sample'"; break; case "varchar": return "eg: "; break; case "nchar": return "eg: "; break; case "text": return "eg: "; break; case "tinytext": return "eg: "; break; case "mediumtext": return "eg: "; break; case "longtext": return "eg: "; break; case "binary": return "eg: "; break; case "varbinary": return "eg: "; break; case "blob": return "eg: "; break; case "tinyblob": return "eg: "; break; case "mediumblob": return "eg: "; break; case "longblob": return "eg: "; break; case "enum": return "eg: "; break; case "set": return "eg: "; break; case "time": return "eg: "; break; case "geometry": return "eg: "; break; case "point": return "eg: "; break; case "linestring": return "eg: "; break; case "polygon": return "eg: "; break; case "multipoint": return "eg: "; break; case "multilinestring": return "eg: "; break; case "multipolygon": return "eg: "; break; case "json": return "eg: "; break; } } static getDefaultScaleForDatatype(type) { switch (type) { case "int": return ' ' break; case "tinyint": return ' ' break; case "smallint": return ' ' break; case "mediumint": return ' ' break; case "bigint": return ' ' break; case "bit": return ' ' break; case "boolean": return ' ' break; case "float": return '2' break; case "decimal": return '2' break; case "double": return '2' break; case "serial": return ' ' break; case "date": case "datetime": case "timestamp": return ' ' break; case "time": return ' ' break; case "year": return ' ' break; case "char": return ' ' break; case "varchar": return ' ' break; case "nchar": return ' ' break; case "text": return ' ' break; case "tinytext": return ' ' break; case "mediumtext": return ' ' break; case "longtext": return ' ' break; case "binary": return ' ' break; case "varbinary": return ' ' break; case "blob": return ' ' break; case "tinyblob": return ' ' break; case "mediumblob": return ' ' break; case "longblob": return ' ' break; case "enum": return ' ' break; case "set": return ' ' break; case "geometry": return ' ' case "point": return ' ' case "linestring": return ' ' case "polygon": return ' ' case "multipoint": return ' ' case "multilinestring": return ' ' case "multipolygon": return ' ' case "json": return ' ' break; } } static colPropAIDisabled(col, columns) { //console.log(col); if (col.dt === 'int4' || col.dt === 'integer' || col.dt === 'bigint' || col.dt === 'smallint') { for (var i = 0; i < columns.length; ++i) { if (columns[i].cn !== col.cn && columns[i].ai) { return true; } } return false; } else { return true; } } static colPropUNDisabled(col) { //console.log(col); return true; // if (col.dt === 'int' || // col.dt === 'tinyint' || // col.dt === 'smallint' || // col.dt === 'mediumint' || // col.dt === 'bigint') { // return false; // } else { // return true; // } } static onCheckboxChangeAI(col) { console.log(col); if (col.dt === 'int' || col.dt === 'bigint' || col.dt === 'smallint' || col.dt === 'tinyint') { col.altered = col.altered || 2; } // if (!col.ai) { // col.dtx = 'specificType' // } else { // col.dtx = '' // } } static onCheckboxChangeAU(col) { console.log(col); if (1) { col.altered = col.altered || 2; } if (col.au) { col.cdf = 'now()'; } // if (!col.ai) { // col.dtx = 'specificType' // } else { // col.dtx = '' // } } static showScale(columnObj) { return false; } static removeUnsigned(columns) { for (var i = 0; i < columns.length; ++i) { if (columns[i].altered === 1 && (!(columns[i].dt === 'int' || columns[i].dt === 'bigint' || columns[i].dt === 'tinyint' || columns[i].dt === 'smallint' || columns[i].dt === 'mediumint'))) { columns[i].un = false; console.log('>> resetting unsigned value', columns[i].cn); } console.log(columns[i].cn); } } static columnEditable(colObj) { return colObj.tn !== '_evolutions' || colObj.tn !== 'nc_evolutions'; } static extractFunctionName(query) { const reg = /^\s*CREATE\s+(?:OR\s+REPLACE\s*)?\s*FUNCTION\s+(?:[\w\d_]+\.)?([\w_\d]+)/i; const match = query.match(reg); return match && match[1]; } static extractProcedureName(query) { const reg = /^\s*CREATE\s+(?:OR\s+REPLACE\s*)?\s*PROCEDURE\s+(?:[\w\d_]+\.)?([\w_\d]+)/i; const match = query.match(reg); return match && match[1]; } static handleRawOutput(result, headers) { if (['DELETE', 'INSERT', 'UPDATE'].includes(result.command.toUpperCase())) { headers.push({text: 'Row count', value: 'rowCount', sortable: false}) result = [{ rowCount: result.rowCount }]; } else { result = result.rows; if (Array.isArray(result) && result[0]) { const keys = Object.keys(result[0]); //set headers before settings result for (let i = 0; i < keys.length; i++) { const text = keys[i]; headers.push({text, value: text, sortable: false}); } } } return result; } static splitQueries(query) { /*** * we are splitting based on semicolon * there are mechanism to escape semicolon within single/double quotes(string) */ return query.match(/\b("[^"]*;[^"]*"|'[^']*;[^']*'|[^;])*;/g); } /** * if sql statement is SELECT - it limits to a number * @param args * @returns {string|*} */ sanitiseQuery(args) { let q = args.query.trim().split(';'); if (q[0].startsWith('Select')) { q = q[0] + ` LIMIT 0,${args.limit ? args.limit : 100};` } else if (q[0].startsWith('select')) { q = q[0] + ` LIMIT 0,${args.limit ? args.limit : 100};` } else if (q[0].startsWith('SELECT')) { q = q[0] + ` LIMIT 0,${args.limit ? args.limit : 100};` } else { return args.query; } return q; } static getColumnsFromJson(json, tn) { const columns = []; try { if (typeof json === 'object' && !Array.isArray(json)) { let keys = Object.keys(json); for (let i = 0; i < keys.length; ++i) { const column = { "dp": null, "tn": tn, "cn": keys[i], "cno": keys[i], "np": 10, "ns": 0, "clen": null, "cop": 1, "pk": false, "nrqd": false, "rqd": false, "un": false, "ct": "int(11) unsigned", "ai": false, "unique": false, "cdf": null, "cc": "", "csn": null, "dtx": "specificType", "dtxp": null, "dtxs": 0, altered: 1 }; switch (typeof json[keys[i]]) { case 'number': if (Number.isInteger(json[keys[i]])) { if (PgUi.isValidTimestamp(keys[i], json[keys[i]])) { Object.assign(column, { "dt": "timestamp" }); } else { Object.assign(column, { "dt": "int", "np": 10, "ns": 0, }); } } else { Object.assign(column, { "dt": "float4", "np": null, "ns": null, "dtxp": null, "dtxs": null, }); } break; case 'string': if (PgUi.isValidDate(json[keys[i]])) { Object.assign(column, { "dt": "date" }); } else if (json[keys[i]].length <= 255) { Object.assign(column, { "dt": "character varying", "np": null, "ns": 0, "dtxp": null, }); } else { Object.assign(column, { "dt": "text" }); } break; case 'boolean': Object.assign(column, { "dt": "boolean", "np": 3, "ns": 0, }); break; case 'object': Object.assign(column, { "dt": "json", "np": 3, "ns": 0, }); break; default: break; } columns.push(column) } } } catch (e) { console.log('Error in getColumnsFromJson', e); } finally { } return columns; } static isValidTimestamp(key, value) { if (typeof value !== 'number') return false; return new Date(value).getTime() > 0 && /(?:_|(?=A))[aA]t$/.test(key); } static isValidDate(value) { return new Date(value).getTime() > 0; } static colPropAuDisabled(col) { if (col.altered !== 1) return true; switch (col.dt) { case "time": case "time without time zone": case "timestamp": case "timestamp without time zone": case "timestamptz": case "timestamp with time zone": case "timetz": case "time with time zone": return false; break; default: return true; } } static getAbstractType(col) { switch ((col.dt || col.dt).toLowerCase()) { case "anyenum": return 'enum'; case "anynonarray": case "anyrange": return 'string'; case "bit": return 'integer'; case "bigint": case "bigserial": return 'string'; case "bool": return 'boolean'; case "box": case "bpchar": case "bytea": case "char": case "character": return 'string'; case "cid": case "cidr": case "circle": case "cstring": return 'string' case "date": return 'date' case "daterange": return 'string' case "double precision": return 'string'; case "event_trigger": case "fdw_handler": return 'string'; case "float4": case "float8": return 'float'; case "gtsvector": case "index_am_handler": case "inet": return 'string'; case "int": case "int2": case "int4": case "int8": case "integer": return 'integer' case "int4range": case "int8range": case "internal": case "interval": return 'string' case "json": return 'json' case "jsonb": return 'string'; case "language_handler": case "line": case "lsec": case "macaddr": case "money": case "name": case "numeric": case "numrange": case "oid": case "opaque": case "path": case "pg_ddl_command": case "pg_lsn": case "pg_node_tree": case "point": case "polygon": return 'string'; case "real": return 'float'; case "record": case "refcursor": case "regclass": case "regconfig": case "regdictionary": case "regnamespace": case "regoper": case "regoperator": case "regproc": case "regpreocedure": case "regrole": case "regtype": case "reltime": return 'string' case "serial": case "serial2": case "serial8": case "smallint": case "smallserial": return 'integer' case "smgr": return 'string' case "text": return 'text' case "tid": return 'string' case "time": case "time without time zone": return 'time' case "timestamp": case "timestamp without time zone": case "timestamptz": case "timestamp with time zone": return 'datetime' case "timetz": case "time with time zone": return 'time' case "tinterval": case "trigger": case "tsm_handler": case "tsquery": case "tsrange": case "tstzrange": case "tsvector": case "txid_snapshot": case "unknown": case "void": case "xid": case "character varying": case "xml": return 'string' case "tinyint": case "mediumint": return 'integer' case "float": case "decimal": case "double": return 'float' case "boolean": return 'boolean' case "datetime": return 'datetime' case "uuid": case "year": case "varchar": case "nchar": return 'string' case "tinytext": case "mediumtext": case "longtext": return 'text' case "binary": case "varbinary": return 'string' case "blob": case "tinyblob": case "mediumblob": case "longblob": return 'blob' case "enum": return 'enum' case "set": return 'set' case "geometry": case "linestring": case "multipoint": case "multilinestring": case "multipolygon": return 'string' case "json": return 'json' } } static getUIType(col) { switch (this.getAbstractType(col)) { case 'integer': return 'Number'; case "boolean": return 'Checkbox'; case 'float': return 'Decimal'; case "date": return 'Date'; case "datetime": return 'CreateTime'; case "time": return 'Time'; case 'year': return 'Year'; case 'string': return 'SingleLineText'; case "text": return 'LongText'; case 'blob': return 'Attachment' case "enum": return 'SingleSelect'; case "set": return 'MultiSelect'; case "json": return 'LongText'; } } static getDataTypeForUiType(col) { const colProp = {} switch (col.uidt) { case 'ID': colProp.dt = 'int4'; colProp.pk = true; colProp.un = true; colProp.ai = true; colProp.rqd = true; break; case 'ForeignKey': colProp.dt = 'character varying'; break; case 'SingleLineText': colProp.dt = 'character varying'; break; case 'LongText': colProp.dt = 'text'; break; case 'Attachment': colProp.dt = 'text'; break; case 'Checkbox': colProp.dt = 'bool'; break; case 'MultiSelect': colProp.dt = 'set'; break; case 'SingleSelect': colProp.dt = 'enum'; break; case 'Collaborator': colProp.dt = 'character varying'; break; case 'Date': colProp.dt = 'character varying'; break; case 'Year': colProp.dt = 'year'; break; case 'Time': colProp.dt = 'time'; break; case 'PhoneNumber': colProp.dt = 'character varying'; colProp.validate = {"func": ["isMobilePhone"], "args": [""], "msg": ["Validation failed : isMobilePhone"]} break; case 'Email': colProp.dt = 'character varying'; colProp.validate = {"func": ["isEmail"], "args": [""], "msg": ["Validation failed : isEmail"]} break; case 'URL': colProp.dt = 'character varying'; colProp.validate = {"func": ["isURL"], "args": [""], "msg": ["Validation failed : isURL"]} break; case 'Number': colProp.dt = 'int8'; break; case 'Decimal': colProp.dt = 'decimal'; break; case 'Currency': colProp.dt = 'decimal'; colProp.validate = {"func": ["isCurrency"], "args": [""], "msg": ["Validation failed : isCurrency"]} break; case 'Percent': colProp.dt = 'double'; break; case 'Duration': colProp.dt = 'int8'; break; case 'Rating': colProp.dt = 'float8'; break; case 'Formula': colProp.dt = 'character varying'; break; case 'Rollup': colProp.dt = 'character varying'; break; case 'Count': colProp.dt = 'int8'; break; case 'Lookup': colProp.dt = 'character varying'; break; case 'DateTime': colProp.dt = 'datetime'; break; case 'CreateTime': colProp.dt = 'datetime'; break; case 'LastModifiedTime': colProp.dt = 'datetime'; break; case 'AutoNumber': colProp.dt = 'int'; break; case 'Barcode': colProp.dt = 'character varying'; break; case 'Button': colProp.dt = 'character varying'; break; default: colProp.dt = 'character varying'; break; } return colProp } static getDataTypeListForUiType(col) { switch (col.uidt) { case 'ID': case 'ForeignKey': return dbTypes; break; case 'SingleLineText': case 'LongText': case 'Attachment': case 'Collaborator': return [ "char", "character", "character varying", "text", ]; break; case 'Checkbox': return [ "bit", "bool", "int2", "int4", "int8", "boolean", "smallint", "int", "integer", "bigint", "bigserial", "char", "int4range", "int8range", "serial", "serial2", "serial8", ] break; case 'MultiSelect': return [ 'set', "text", ]; break; case 'SingleSelect': return [ 'anyenum', "text", ]; break; case 'Year': return ['int']; break; case 'Time': return ["time", "time without time zone", "timestamp", "timestamp without time zone", "timestamptz", "timestamp with time zone", "timetz", "time with time zone",]; break; case 'PhoneNumber': case 'Email': return [ "character varying", ]; break; case 'URL': return [ "character varying", "text", ]; break; case 'Number': return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "double precision", "float4", "float8", "smallint", "smallserial", ] break; case 'Decimal': return [ "double precision", "float4", "float8", ] break; case 'Currency': return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "double precision", "money", "float4", "float8",]; break; case 'Percent': return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "double precision", "float4", "float8", "smallint", "smallserial", ] break; case 'Duration': return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "double precision", "float4", "float8", "smallint", "smallserial",] break; case 'Rating': return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "double precision", "float4", "float8", "smallint", "smallserial",] break; case 'Formula': return [ "text", "character varying", ]; break; case 'Rollup': return [ "character varying", ]; break; case 'Count': return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "smallint", "smallserial", ]; break; case 'Lookup': return [ "character varying", ]; break; case 'Date': return [ "date", "timestamp", "timestamp without time zone", "timestamptz", "timestamp with time zone", ]; break; case 'DateTime': case 'CreateTime': case 'LastModifiedTime': return [ "timestamp", "timestamp without time zone", "timestamptz", "timestamp with time zone", ]; break; case 'AutoNumber': return return [ "int", "integer", "bigint", "bigserial", "int2", "int4", "int8", "serial", "serial2", "serial8", "smallint", "smallserial", ]; break; case 'Barcode': return ['character varying']; break; case 'Geometry': return [ "polygon", "point", "circle", "box", "line", 'lseg', 'path', 'circle' ]; break; case 'Button': default: return dbTypes; break; } } } // module.exports = PgUiHelp; /** * @copyright Copyright (c) 2021, Xgene Cloud Ltd * * @author Naveen MR * @author Pranav C Balan * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */