chmeta.ts 922 B

123456789101112131415161718192021222324252627
  1. import axios from "axios";
  2. import { IDBFieldMeta } from "../interfaces";
  3. import { useGlobalStore } from "../store";
  4. // import fs from 'fs'
  5. export async function CHQuery (sql: string): Promise<string> {
  6. const config = useGlobalStore().getConfig();
  7. // fs.appendFileSync('./log.sql', sql)
  8. const res = await axios(`${config.clickhouse.protocol}://${config.clickhouse.host}:${config.clickhouse.port}?query=${sql}`, {
  9. params: {
  10. query: sql,
  11. user: config.clickhouse.user,
  12. password: config.clickhouse.password
  13. }
  14. });
  15. return res.data;
  16. }
  17. export async function getFieldMetas(viewName: string): Promise<IDBFieldMeta[]> {
  18. const metaRaw = await CHQuery(`DESC ${viewName}`);
  19. return metaRaw.slice(0, -1).split('\n').map(fr => {
  20. const infos = fr.split('\t');
  21. return {
  22. fid: infos[0],
  23. dataType: infos[1]
  24. }
  25. })
  26. }