Skip to content
Snippets Groups Projects
Select Git revision
  • 8ce2f8f28341a14c49e8efd180774c29ddb0f8b6
  • master default protected
2 results

01-dispatching.t

Blame
  • query-service.ts 7.55 KiB
    import {format} from 'sql-formatter'
    import type {AxiosRequestConfig} from 'axios'
    import {axiosErrorToApiError} from '@/utils'
    
    export const useQueryService = (): any => {
      async function findAll(databaseId: number, persisted: boolean): Promise<QueryDto[]> {
        const axios = useAxiosInstance()
        console.debug('find queries')
        return new Promise<QueryDto[]>((resolve, reject) => {
          axios.get<QueryDto[]>(`/api/database/${databaseId}/subset`, {params: (persisted && {persisted})})
            .then((response) => {
              console.info(`Found ${response.data.length} query(s)`)
              resolve(response.data)
            })
            .catch((error) => {
              if (error.response.status === 403) {
                /* ignore */
                resolve([])
              }
              console.error('Failed to find queries', error)
              reject(axiosErrorToApiError(error))
            })
        })
      }
    
      async function findOne(databaseId: number, queryId: number): Promise<QueryDto> {
        const axios = useAxiosInstance()
        console.debug('find query with id', queryId, 'in database with id', databaseId)
        return new Promise<QueryDto>((resolve, reject) => {
          axios.get<QueryDto>(`/api/database/${databaseId}/subset/${queryId}`)
            .then((response) => {
              console.info('Found query with id', queryId, 'in database with id', databaseId)
              resolve(response.data)
            })
            .catch((error) => {
              console.error('Failed to find query', error)
              reject(axiosErrorToApiError(error))
            })
        })
      }
    
      async function update(databaseId: number, queryId: number, data: QueryPersistDto): Promise<QueryDto> {
        const axios = useAxiosInstance()
        console.debug('update query with id', queryId, 'in database with id', databaseId)
        return new Promise<QueryDto>((resolve, reject) => {
          axios.put<QueryDto>(`/api/database/${databaseId}/subset/${queryId}`, data)
            .then((response) => {
              console.info('Updated query with id', queryId, 'in database with id', databaseId)
              resolve(response.data)
            })
            .catch((error) => {
              console.error('Failed to update query', error)
              reject(axiosErrorToApiError(error))
            })
        })
      }
    
      async function exportCsv(databaseId: number, queryId: number): Promise<any> {
        const axios = useAxiosInstance()
        const config: AxiosRequestConfig = {
          responseType: 'blob',
          headers: {
            Accept: 'text/csv'
          }
        }
        console.debug('export query with id', queryId, 'in database with id', databaseId)
        return new Promise<any>((resolve, reject) => {
          axios.get<any>(`/api/database/${databaseId}/subset/${queryId}`, config)
            .then((response) => {
              console.info('Exported query with id', queryId, 'in database with id', databaseId)