import { getValuable } from "@/lib/utils"; import { dbInstance } from "@/services/db/db.instance"; import type { DatabasesResponse, GetTableColumnsArgs, GetTableDataArgs, GetTableDataResponse, GetTableForeignKeysArgs, GetTableIndexesArgs, GetTablesListArgs, GetTablesListResponse, QueryRawSqlArgs, QueryRawSqlResponse, TableColumns, TableForeignKeys, TableIndexes, } from "@/services/db/db.types"; class DbService { getDatabasesList() { return dbInstance.get("api/databases").json(); } getTablesList({ dbName, sortDesc, sortField }: GetTablesListArgs) { return dbInstance .get(`api/databases/${dbName}/tables`, { searchParams: getValuable({ sortField, sortDesc }), }) .json(); } getTableData({ dbName, tableName, page, perPage, sortField, sortDesc, }: GetTableDataArgs) { return dbInstance .get(`api/databases/${dbName}/tables/${tableName}/data`, { searchParams: getValuable({ perPage, page, sortField, sortDesc }), }) .json(); } getTableColumns({ dbName, tableName }: GetTableColumnsArgs) { return dbInstance .get(`api/databases/${dbName}/tables/${tableName}/columns`) .json(); } getTableIndexes({ dbName, tableName }: GetTableIndexesArgs) { return dbInstance .get(`api/databases/${dbName}/tables/${tableName}/indexes`) .json(); } getTableForeignKeys({ dbName, tableName }: GetTableForeignKeysArgs) { return dbInstance .get(`api/databases/${dbName}/tables/${tableName}/foreign-keys`) .json(); } queryRawSql({ query }: QueryRawSqlArgs) { return dbInstance .post("api/raw", { json: { query }, }) .json(); } } export const dbService = new DbService();