mirror of
https://github.com/ershisan99/db-studio.git
synced 2025-12-16 12:33:05 +00:00
78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
import { useQuery } from "@tanstack/react-query";
|
|
import { DB_QUERY_KEYS } from "./db.query-keys";
|
|
import { dbService } from "./db.service";
|
|
import type {
|
|
GetTableColumnsArgs,
|
|
GetTableDataArgs,
|
|
GetTableForeignKeysArgs,
|
|
GetTableIndexesArgs,
|
|
GetTablesListArgs,
|
|
} from "./db.types";
|
|
|
|
export const useDatabasesListQuery = () => {
|
|
return useQuery({
|
|
queryKey: [DB_QUERY_KEYS.DATABASES.ALL],
|
|
queryFn: () => dbService.getDatabasesList(),
|
|
});
|
|
};
|
|
|
|
export const useTablesListQuery = (args: GetTablesListArgs) => {
|
|
return useQuery({
|
|
queryKey: [DB_QUERY_KEYS.TABLES.ALL, args],
|
|
queryFn: () => dbService.getTablesList(args),
|
|
enabled: !!args.dbName,
|
|
});
|
|
};
|
|
|
|
export const useTableDataQuery = (args: GetTableDataArgs) => {
|
|
return useQuery({
|
|
queryKey: [DB_QUERY_KEYS.TABLES.DATA, args],
|
|
queryFn: () => dbService.getTableData(args),
|
|
placeholderData: (previousData, previousQuery) => {
|
|
if (
|
|
typeof previousQuery?.queryKey[1] !== "string" &&
|
|
(previousQuery?.queryKey[1].dbName !== args.dbName ||
|
|
previousQuery?.queryKey[1].tableName !== args.tableName)
|
|
) {
|
|
return undefined;
|
|
}
|
|
return previousData;
|
|
},
|
|
enabled: !!args.tableName && !!args.dbName,
|
|
});
|
|
};
|
|
|
|
export const useTableColumnsQuery = (args: GetTableColumnsArgs) => {
|
|
return useQuery({
|
|
queryKey: [DB_QUERY_KEYS.TABLES.COLUMNS, args],
|
|
queryFn: () => dbService.getTableColumns(args),
|
|
placeholderData: (previousData, previousQuery) => {
|
|
if (
|
|
typeof previousQuery?.queryKey[1] !== "string" &&
|
|
(previousQuery?.queryKey[1].dbName !== args.dbName ||
|
|
previousQuery?.queryKey[1].tableName !== args.tableName)
|
|
) {
|
|
return undefined;
|
|
}
|
|
return previousData;
|
|
},
|
|
enabled: !!args.tableName && !!args.dbName,
|
|
});
|
|
};
|
|
|
|
export const useTableIndexesQuery = (args: GetTableIndexesArgs) => {
|
|
return useQuery({
|
|
queryKey: [DB_QUERY_KEYS.TABLES.INDEXES, args],
|
|
queryFn: () => dbService.getTableIndexes(args),
|
|
enabled: !!args.tableName && !!args.dbName,
|
|
});
|
|
};
|
|
|
|
export const useTableForeignKeysQuery = (args: GetTableForeignKeysArgs) => {
|
|
return useQuery({
|
|
queryKey: [DB_QUERY_KEYS.TABLES.FOREIGN_KEYS, args],
|
|
queryFn: () => dbService.getTableForeignKeys(args),
|
|
enabled: !!args.tableName && !!args.dbName,
|
|
});
|
|
};
|