Model and DB refactor (#61)

- [x] Move from `sqlx` to `rusqlite`
- [x] Generate TS types from Rust models
This commit is contained in:
Gregory Schier
2024-08-05 07:58:20 -07:00
committed by GitHub
parent 71013fd701
commit 989b5a8058
193 changed files with 7083 additions and 8337 deletions

View File

@@ -1,5 +1,5 @@
import { useMemo } from 'react';
import type { Environment } from '../lib/models';
import type { Environment } from '@yaakapp/api';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';
import { useEnvironments } from './useEnvironments';

View File

@@ -1,4 +1,4 @@
import type { GrpcRequest, HttpRequest } from '../lib/models';
import type { GrpcRequest, HttpRequest } from '@yaakapp/api';
import { useActiveRequestId } from './useActiveRequestId';
import { useRequests } from './useRequests';

View File

@@ -1,5 +1,5 @@
import { useMemo } from 'react';
import type { Workspace } from '../lib/models';
import type { Workspace } from '@yaakapp/api';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
import { useWorkspaces } from './useWorkspaces';

View File

@@ -1,6 +1,6 @@
import { useCallback } from 'react';
import { useNavigate } from 'react-router-dom';
import type { Environment } from '../lib/models';
import type { Environment } from '@yaakapp/api';
import { QUERY_ENVIRONMENT_ID } from './useActiveEnvironmentId';
import { useActiveRequestId } from './useActiveRequestId';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,7 +1,7 @@
import { useMemo } from 'react';
import type { HttpHeader } from '../lib/models';
import type { HttpResponseHeader } from '@yaakapp/api';
export function useContentTypeFromHeaders(headers: HttpHeader[] | null): string | null {
export function useContentTypeFromHeaders(headers: HttpResponseHeader[] | null): string | null {
return useMemo(
() => headers?.find((h) => h.name.toLowerCase() === 'content-type')?.value ?? null,
[headers],

View File

@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { Environment } from '../lib/models';
import type { Environment } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
import { useAppRoutes } from './useAppRoutes';

View File

@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { Folder } from '../lib/models';
import type { Folder } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveRequest } from './useActiveRequest';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,6 +1,6 @@
import { useMutation } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { GrpcRequest } from '../lib/models';
import type { GrpcRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';
import { useActiveRequest } from './useActiveRequest';

View File

@@ -1,6 +1,6 @@
import { useMutation } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';
import { useActiveRequest } from './useActiveRequest';

View File

@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import type { Workspace } from '../lib/models';
import type { Workspace } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useAppRoutes } from './useAppRoutes';
import { usePrompt } from './usePrompt';

View File

@@ -2,7 +2,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import { fallbackRequestName } from '../lib/fallbackRequestName';
import type { GrpcRequest } from '../lib/models';
import type { GrpcRequest } from '@yaakapp/api';
import { getGrpcRequest } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { useConfirm } from './useConfirm';

View File

@@ -2,7 +2,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import { fallbackRequestName } from '../lib/fallbackRequestName';
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { getHttpRequest } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { useConfirm } from './useConfirm';

View File

@@ -1,7 +1,7 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { Environment, Workspace } from '../lib/models';
import type { Environment, Workspace } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useConfirm } from './useConfirm';
import { environmentsQueryKey } from './useEnvironments';

View File

@@ -1,7 +1,7 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { Folder } from '../lib/models';
import type { Folder } from '@yaakapp/api';
import { getFolder } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { useConfirm } from './useConfirm';

View File

@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { GrpcConnection } from '../lib/models';
import type { GrpcConnection } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { grpcConnectionsQueryKey } from './useGrpcConnections';

View File

@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { httpResponsesQueryKey } from './useHttpResponses';

View File

@@ -1,7 +1,7 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { Workspace } from '../lib/models';
import type { Workspace } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
import { useAppRoutes } from './useAppRoutes';

View File

@@ -1,7 +1,7 @@
import { useMutation } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import { setKeyValue } from '../lib/keyValueStore';
import type { GrpcRequest } from '../lib/models';
import type { GrpcRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,6 +1,6 @@
import { useMutation } from '@tanstack/react-query';
import { trackEvent } from '../lib/analytics';
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { Environment } from '../lib/models';
import type { Environment } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { Folder } from '../lib/models';
import type { Folder } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -2,7 +2,7 @@ import { useMutation, useQuery } from '@tanstack/react-query';
import { emit } from '@tauri-apps/api/event';
import { trackEvent } from '../lib/analytics';
import { minPromiseMillis } from '../lib/minPromiseMillis';
import type { GrpcConnection, GrpcRequest } from '../lib/models';
import type { GrpcConnection, GrpcRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';
import { useDebouncedValue } from './useDebouncedValue';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { GrpcConnection } from '../lib/models';
import type { GrpcConnection } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
export function grpcConnectionsQueryKey({ requestId }: { requestId: string }) {

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { GrpcEvent } from '../lib/models';
import type { GrpcEvent } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
export function grpcEventsQueryKey({ connectionId }: { connectionId: string }) {

View File

@@ -1,4 +1,4 @@
import type { GrpcRequest } from '../lib/models';
import type { GrpcRequest } from '@yaakapp/api';
import { useGrpcRequests } from './useGrpcRequests';
export function useGrpcRequest(id: string | null): GrpcRequest | null {

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { GrpcRequest } from '../lib/models';
import type { GrpcRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,4 +1,4 @@
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { useHttpRequests } from './useHttpRequests';
export function useHttpRequest(id: string | null): HttpRequest | null {

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
export function httpResponsesQueryKey({ requestId }: { requestId: string }) {

View File

@@ -4,7 +4,7 @@ import { FormattedError } from '../components/core/FormattedError';
import { VStack } from '../components/core/Stacks';
import { useDialog } from '../components/DialogContext';
import { ImportDataDialog } from '../components/ImportDataDialog';
import type { Environment, Folder, GrpcRequest, HttpRequest, Workspace } from '../lib/models';
import type { Environment, Folder, GrpcRequest, HttpRequest, Workspace } from '@yaakapp/api';
import { count } from '../lib/pluralize';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -2,7 +2,7 @@ import type { IntrospectionQuery } from 'graphql';
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { buildClientSchema, getIntrospectionQuery } from '../components/core/Editor';
import { minPromiseMillis } from '../lib/minPromiseMillis';
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { getResponseBodyText } from '../lib/responseBody';
import { sendEphemeralRequest } from '../lib/sendEphemeralRequest';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';

View File

@@ -1,4 +1,4 @@
import type { GrpcConnection } from '../lib/models';
import type { GrpcConnection } from '@yaakapp/api';
import { useGrpcConnections } from './useGrpcConnections';
export function useLatestGrpcConnection(requestId: string | null): GrpcConnection | null {

View File

@@ -1,4 +1,4 @@
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { useHttpResponses } from './useHttpResponses';
export function useLatestHttpResponse(requestId: string | null): HttpResponse | null {

View File

@@ -1,4 +1,4 @@
import type { GrpcConnection, GrpcRequest } from '../lib/models';
import type { GrpcConnection, GrpcRequest } from '@yaakapp/api';
import { useGrpcConnections } from './useGrpcConnections';
import { useKeyValue } from './useKeyValue';
import { useLatestGrpcConnection } from './useLatestGrpcConnection';

View File

@@ -1,4 +1,4 @@
import type { HttpRequest, HttpResponse } from '../lib/models';
import type { HttpRequest, HttpResponse } from '@yaakapp/api';
import { useHttpResponses } from './useHttpResponses';
import { useKeyValue } from './useKeyValue';
import { useLatestHttpResponse } from './useLatestHttpResponse';

View File

@@ -1,4 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import type { GrpcRequest, HttpRequest } from '@yaakapp/api';
import { InlineCode } from '../components/core/InlineCode';
import { usePrompt } from './usePrompt';
import { useRequests } from './useRequests';
@@ -33,9 +34,9 @@ export function useRenameRequest(requestId: string | null) {
defaultValue: request.name,
});
if (request.model === 'http_request') {
updateHttpRequest.mutate({ id: request.id, update: (r) => ({ ...r, name }) });
updateHttpRequest.mutate({ id: request.id, update: (r: HttpRequest) => ({ ...r, name }) });
} else {
updateGrpcRequest.mutate({ id: request.id, update: (r) => ({ ...r, name }) });
updateGrpcRequest.mutate({ id: request.id, update: (r: GrpcRequest) => ({ ...r, name }) });
}
},
});

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { getResponseBodyBlob } from '../lib/responseBody';
export function useResponseBodyBlob(response: HttpResponse) {

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { getResponseBodyText } from '../lib/responseBody';
export function useResponseBodyText(response: HttpResponse) {

View File

@@ -4,7 +4,7 @@ import mime from 'mime';
import slugify from 'slugify';
import { InlineCode } from '../components/core/InlineCode';
import { useToast } from '../components/ToastContext';
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { getContentTypeHeader } from '../lib/models';
import { getHttpRequest } from '../lib/store';
import { invokeCmd } from '../lib/tauri';

View File

@@ -2,7 +2,7 @@ import { useMutation } from '@tanstack/react-query';
import { save } from '@tauri-apps/plugin-dialog';
import slugify from 'slugify';
import { trackEvent } from '../lib/analytics';
import type { HttpResponse } from '../lib/models';
import type { HttpResponse } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { useActiveCookieJar } from './useActiveCookieJar';
import { useActiveEnvironment } from './useActiveEnvironment';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { Settings } from '../lib/models';
import type { Settings } from '../lib/gen/Settings';
import { invokeCmd } from '../lib/tauri';
export function settingsQueryKey() {

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import type { Folder } from '../lib/models';
import type { Folder } from '@yaakapp/api';
import { getFolder } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { foldersQueryKey } from './useFolders';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import type { GrpcRequest } from '../lib/models';
import type { GrpcRequest } from '@yaakapp/api';
import { getGrpcRequest } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { grpcRequestsQueryKey } from './useGrpcRequests';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import type { HttpRequest } from '../lib/models';
import type { HttpRequest } from '@yaakapp/api';
import { getHttpRequest } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { httpRequestsQueryKey } from './useHttpRequests';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import type { Environment } from '../lib/models';
import type { Environment } from '@yaakapp/api';
import { getEnvironment } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { environmentsQueryKey } from './useEnvironments';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import type { Workspace } from '../lib/models';
import type { Workspace } from '@yaakapp/api';
import { getWorkspace } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { workspacesQueryKey } from './useWorkspaces';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import type { Workspace } from '../lib/models';
import type { Workspace } from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/ban-types
@@ -12,7 +12,9 @@ export function useWorkspaces() {
useQuery({
queryKey: workspacesQueryKey(),
queryFn: async () => {
console.log('GETTING WORKSPACES');
const workspaces = await invokeCmd('cmd_list_workspaces');
console.log('GOT WORKSPACES');
return workspaces as Workspace[];
},
}).data ?? []