| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- export class PostgresQueryBuilder {
- constructor(private target, private queryModel) {}
- buildSchemaQuery() {
- var query = "SELECT schema_name FROM information_schema.schemata WHERE";
- query += " schema_name NOT LIKE 'pg_%' AND schema_name NOT LIKE '\\_%' AND schema_name <> 'information_schema';";
- return query;
- }
- buildTableQuery() {
- var query = "SELECT table_name FROM information_schema.tables WHERE ";
- query += "table_schema = " + this.queryModel.quoteLiteral(this.target.schema);
- return query;
- }
- buildColumnQuery(type?: string) {
- var query = "SELECT column_name FROM information_schema.columns WHERE ";
- query += "table_schema = " + this.queryModel.quoteLiteral(this.target.schema);
- query += " AND table_name = " + this.queryModel.quoteLiteral(this.target.table);
- switch (type) {
- case "time": {
- query += " AND data_type IN ('timestamp without time zone','timestamp with time zone','bigint','integer','double precision','real')";
- break;
- }
- case "metric": {
- query += " AND data_type IN ('text','char','varchar')";
- break;
- }
- case "value": {
- query += " AND data_type IN ('bigint','integer','double precision','real')";
- break;
- }
- }
- return query;
- }
- buildValueQuery(column: string) {
- var query = "SELECT DISTINCT " + this.queryModel.quoteIdentifier(column) + "::text";
- query += " FROM " + this.queryModel.quoteIdentifier(this.target.schema);
- query += "." + this.queryModel.quoteIdentifier(this.target.table);
- query += " ORDER BY " + this.queryModel.quoteIdentifier(column);
- query += " LIMIT 100";
- return query;
- }
- buildDatatypeQuery(column: string) {
- var query = "SELECT data_type FROM information_schema.columns WHERE ";
- query += " table_schema = " + this.queryModel.quoteLiteral(this.target.schema);
- query += " AND table_name = " + this.queryModel.quoteLiteral(this.target.table);
- query += " AND column_name = " + this.queryModel.quoteLiteral(column);
- return query;
- }
- }
|