Skip to content

Commit 745ac85

Browse files
authored
Merge pull request #15 from code-kern-ai/fastapi
FastAPI Integration
2 parents b98943e + 8f8a8a9 commit 745ac85

File tree

125 files changed

+1675
-1066
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+1675
-1066
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,6 @@ yarn-error.log*
3535
# typescript
3636
*.tsbuildinfo
3737
next-env.d.ts
38+
39+
# dev
40+
.vscode

src/components/config/Config.tsx

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import { CacheEnum, selectCachedValue } from "@/src/reduxStore/states/cachedValues";
22
import { selectOrganization, setOrganization } from "@/src/reduxStore/states/general";
33
import { ConfigManager } from "@/src/services/base/config";
4-
import { GET_ORGANIZATION } from "@/src/services/gql/queries/organizations";
5-
import { CHANGE_ORGANIZATION, UPDATE_CONFIG } from "@/src/services/gql/mutations/organizations";
64
import { Configuration, LocalConfig } from "@/src/types/components/config/config"
75
import { snakeCaseToCamelCase } from "@/submodules/javascript-functions/case-types-parser";
86
import Dropdown2 from "@/submodules/react-components/components/Dropdown2";
9-
import { useMutation } from "@apollo/client";
107
import { IconPlus, IconTrash } from "@tabler/icons-react";
118
import { useEffect, useState } from "react"
129
import { useSelector, useDispatch } from "react-redux";
13-
import { useLazyQuery } from "@apollo/client";
10+
import { changeOrganization, getOrganization, updateConfig } from "@/src/services/base/organization";
1411

1512
export default function Config() {
1613
const dispatch = useDispatch();
@@ -22,10 +19,6 @@ export default function Config() {
2219
const [prepareTokenizedValues, setPrepareTokenizedValues] = useState<any[]>([]);
2320
const [preparedOptions, setPreparedOptions] = useState<any[]>([]);
2421

25-
const [refetchOrganization] = useLazyQuery(GET_ORGANIZATION, { fetchPolicy: 'no-cache' });
26-
const [changeOrganizationMut] = useMutation(CHANGE_ORGANIZATION);
27-
const [updateConfigMut] = useMutation(UPDATE_CONFIG);
28-
2922
useEffect(() => {
3023
if (!ConfigManager.isInit()) return;
3124
setLocalConfig({
@@ -79,19 +72,19 @@ export default function Config() {
7972
updateDict[key] = value;
8073
}
8174
if (subkey == 'max_rows' || subkey == 'max_cols' || subkey == 'max_char_count') {
82-
changeOrganizationMut({ variables: { orgId: organization.id, changes: JSON.stringify(updateDict.limit_checks) } }).then((res) => {
75+
changeOrganization(organization.id, JSON.stringify(updateDict.limit_checks), (res) => {
8376
if (!res?.data?.changeOrganization) {
8477
window.alert('something went wrong with the update');
8578
} else {
86-
refetchOrganization().then((res) => {
79+
getOrganization((res) => {
8780
if (res.data["userOrganization"]) {
8881
dispatch(setOrganization(res.data["userOrganization"]));
8982
}
9083
});
9184
}
9285
});
9386
} else {
94-
updateConfigMut({ variables: { dictStr: JSON.stringify(updateDict) } }).then((res) => {
87+
updateConfig(JSON.stringify(updateDict), (res) => {
9588
if (!res?.data?.updateConfig) {
9689
window.alert('something went wrong with the update');
9790
}

src/components/models-download/AddModelDownloadModal.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ import { Tooltip } from "@nextui-org/react";
44
import { TOOLTIPS_DICT } from "@/src/util/tooltip-constants";
55
import { selectModal, setModalStates } from "@/src/reduxStore/states/modal";
66
import { useDispatch, useSelector } from "react-redux";
7-
import { useMutation } from "@apollo/client";
8-
import { MODEL_PROVIDER_DOWNLOAD_MODEL } from "@/src/services/gql/mutations/projects";
97
import { useCallback, useEffect, useState } from "react";
108
import { dateAsUTCDate } from "@/submodules/javascript-functions/date-parser";
119
import { extentModelsDownloaded, selectModelsDownloaded } from "@/src/reduxStore/states/pages/models-downloaded";
1210
import { ModelsDownloaded, ModelsDownloadedStatus } from "@/src/types/components/models-downloaded/models-downloaded";
1311
import { CacheEnum, selectCachedValue } from "@/src/reduxStore/states/cachedValues";
1412
import Dropdown2 from "@/submodules/react-components/components/Dropdown2";
13+
import { modelProviderDownloadModel } from "@/src/services/base/misc";
1514

1615
const ACCEPT_BUTTON = { buttonCaption: 'Accept', useButton: true };
1716

@@ -52,10 +51,8 @@ export default function AddModelDownloadModal() {
5251
setLineSeparatorIndex(filteredList.findIndex((model: any) => !model.description));
5352
}, [modelsDownloaded, filteredList, modalAddModel, modelsList, modelName]);
5453

55-
const [downloadModelMut] = useMutation(MODEL_PROVIDER_DOWNLOAD_MODEL);
56-
5754
const addModel = useCallback(() => {
58-
downloadModelMut({ variables: { modelName: modelName } }).then((res) => {
55+
modelProviderDownloadModel(modelName, (res) => {
5956
const newModel = {
6057
"name": modelName,
6158
"date": dateAsUTCDate(new Date()).toLocaleString(),

src/components/models-download/DeleteModelDownloadModal.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ import { ModalButton, ModalEnum } from "@/src/types/shared/modal";
22
import Modal from "../shared/modal/Modal";
33
import { useCallback, useEffect, useState } from "react";
44
import { removeModelDownloadByName } from "@/src/reduxStore/states/pages/models-downloaded";
5-
import { useMutation } from "@apollo/client";
6-
import { MODEL_PROVIDER_DELETE_MODEL } from "@/src/services/gql/mutations/projects";
75
import { useDispatch, useSelector } from "react-redux";
86
import { selectModal } from "@/src/reduxStore/states/modal";
7+
import { modelProviderDeleteModel } from "@/src/services/base/misc";
98

109
const ABORT_BUTTON = { buttonCaption: 'Delete', useButton: true, disabled: false };
1110

@@ -16,10 +15,8 @@ export default function DeleteModelDownloadModal() {
1615

1716
const [abortButton, setAbortButton] = useState<ModalButton>(ABORT_BUTTON);
1817

19-
const [deleteModelDownload] = useMutation(MODEL_PROVIDER_DELETE_MODEL);
20-
2118
const deleteModel = useCallback(() => {
22-
deleteModelDownload({ variables: { modelName: modalDeleteModel.modelName } }).then(() => {
19+
modelProviderDeleteModel(modalDeleteModel.modelName, (res) => {
2320
dispatch(removeModelDownloadByName(modalDeleteModel.modelName));
2421
});
2522
}, [modalDeleteModel.modelName]);

src/components/models-download/ModelsDownload.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { selectModelsDownloaded, setModelsDownloaded } from "@/src/reduxStore/states/pages/models-downloaded";
2-
import { GET_MODEL_PROVIDER_INFO } from "@/src/services/gql/queries/projects";
32
import { ModelsDownloaded, ModelsDownloadedStatus } from "@/src/types/components/models-downloaded/models-downloaded";
4-
import { useLazyQuery } from "@apollo/client";
53
import { Tooltip } from "@nextui-org/react";
64
import { IconAlertTriangleFilled, IconArrowLeft, IconBan, IconCheckbox, IconCircleCheckFilled, IconExternalLink, IconLoader, IconPlus, IconTrash } from "@tabler/icons-react";
75
import { useRouter } from "next/router";
@@ -17,6 +15,7 @@ import { TOOLTIPS_DICT } from "@/src/util/tooltip-constants";
1715
import AddModelDownloadModal from "./AddModelDownloadModal";
1816
import DeleteModelDownloadModal from "./DeleteModelDownloadModal";
1917
import { useWebsocket } from "@/src/services/base/web-sockets/useWebsocket";
18+
import { getModelProviderInfo } from "@/src/services/base/project";
2019

2120
export default function ModelsDownload() {
2221
const router = useRouter();
@@ -26,14 +25,12 @@ export default function ModelsDownload() {
2625
const isAdmin = useSelector(selectIsAdmin);
2726
const modelsDownloaded = useSelector(selectModelsDownloaded);
2827

29-
const [refetchModelsDownload] = useLazyQuery(GET_MODEL_PROVIDER_INFO, { fetchPolicy: 'network-only', nextFetchPolicy: 'cache-first' });
30-
3128
useEffect(() => {
3229
refetchModels();
3330
}, []);
3431

3532
function refetchModels() {
36-
refetchModelsDownload().then((res) => {
33+
getModelProviderInfo((res) => {
3734
dispatch(setModelsDownloaded(res.data['modelProviderInfo']));
3835
});
3936
}

src/components/projects/AdminDeleteProjectModal.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import { useCallback, useEffect, useState } from "react";
44
import { useDispatch, useSelector } from "react-redux";
55
import { selectIsAdmin } from "@/src/reduxStore/states/general";
66
import { closeModal, selectModal } from "@/src/reduxStore/states/modal";
7-
import { useMutation } from "@apollo/client";
8-
import { DELETE_PROJECT } from "@/src/services/gql/mutations/projects";
97
import { removeFromAllProjectsById } from "@/src/reduxStore/states/project";
8+
import { deleteProjectPost } from "@/src/services/base/project";
109

1110
const ACCEPT_BUTTON = { buttonCaption: "Delete and never show again", useButton: true };
1211
const ABORT_BUTTON = { buttonCaption: "Delete", useButton: true };
@@ -17,13 +16,10 @@ export default function AdminDeleteProjectModal() {
1716
const isAdmin = useSelector(selectIsAdmin);
1817
const modal = useSelector(selectModal(ModalEnum.ADMIN_DELETE_PROJECT));
1918

20-
const [deleteProjectByIdMut] = useMutation(DELETE_PROJECT, { fetchPolicy: "no-cache" });
21-
22-
2319
const adminDeleteProject = useCallback(() => {
2420
if (!isAdmin) return;
2521
const projectId = modal.projectId;
26-
deleteProjectByIdMut({ variables: { projectId: projectId } }).then(() => {
22+
deleteProjectPost(projectId, (res) => {
2723
dispatch(closeModal(ModalEnum.ADMIN_DELETE_PROJECT));
2824
dispatch(removeFromAllProjectsById(projectId));
2925
})

src/components/projects/ProjectCard.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ import { useRouter } from "next/router";
99
import { useDispatch, useSelector } from "react-redux";
1010
import { NOT_AVAILABLE, UNKNOWN_USER } from "@/src/util/constants";
1111
import { IconArrowRight, IconX } from "@tabler/icons-react";
12-
import { useMutation } from "@apollo/client";
13-
import { DELETE_PROJECT } from "@/src/services/gql/mutations/projects";
1412
import { TOOLTIPS_DICT } from "@/src/util/tooltip-constants";
13+
import { deleteProjectPost } from "@/src/services/base/project";
1514

1615
export default function ProjectCard(props: ProjectCardProps) {
1716
const router = useRouter();
@@ -21,13 +20,11 @@ export default function ProjectCard(props: ProjectCardProps) {
2120
const isAdmin = useSelector(selectIsAdmin);
2221
const user = useSelector(selectUser);
2322

24-
const [deleteProjectByIdMut] = useMutation(DELETE_PROJECT, { fetchPolicy: "no-cache" });
25-
2623
function adminOpenOrDeleteProject(project: Project) {
2724
if (!isAdmin) return;
2825
const deleteInstant = isStringTrue(localStorage.getItem("adminInstantDelete"));
2926
if (deleteInstant) {
30-
deleteProjectByIdMut({ variables: { projectId: project.id } }).then(() => {
27+
deleteProjectPost(project.id, (res) => {
3128
dispatch(closeModal(ModalEnum.ADMIN_DELETE_PROJECT));
3229
dispatch(removeFromAllProjectsById(project.id));
3330
})

src/components/projects/ProjectsList.tsx

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
import { selectInactiveOrganization, selectIsDemo, selectIsManaged, selectUser, setComments } from "@/src/reduxStore/states/general"
22
import { selectAllProjects, setAllProjects } from "@/src/reduxStore/states/project";
3-
import { GET_OVERVIEW_STATS, GET_PROJECT_LIST } from "@/src/services/gql/queries/projects";
43
import { Project, ProjectStatistics } from "@/src/types/components/projects/projects-list";
54
import { CurrentPage } from "@/src/types/shared/general";
65
import { percentRoundString } from "@/submodules/javascript-functions/general";
7-
import { useLazyQuery, useMutation } from "@apollo/client";
86
import { useCallback, useEffect, useState } from "react";
97
import { useDispatch, useSelector } from "react-redux";
108
import YoutubeIntroduction from "./YoutubeIntroduction";
119
import ButtonsContainer from "./ButtonsContainer";
1210
import ProjectCard from "./ProjectCard";
13-
import { GET_CAN_CREATE_LOCAL_ORG } from "@/src/services/gql/queries/organizations";
14-
import { ADD_USER_TO_ORGANIZATION, CREATE_ORGANIZATION } from "@/src/services/gql/mutations/organizations";
1511
import style from "@/src/styles/components/projects/projects-list.module.css";
1612
import AdminDeleteProjectModal from "./AdminDeleteProjectModal";
1713
import { setAllAttributes, setAllEmbeddings, setLabelingTasksAll } from "@/src/reduxStore/states/pages/settings";
1814
import { setOverviewFilters } from "@/src/reduxStore/states/tmp";
1915
import { setDataSlices, setFullSearchStore, setSearchGroupsStore } from "@/src/reduxStore/states/pages/data-browser";
2016
import { SearchGroup } from "@/submodules/javascript-functions/enums/enums";
2117
import { useWebsocket } from "@/src/services/base/web-sockets/useWebsocket";
18+
import { getAllProjects } from "@/src/services/base/project";
19+
import { addUserToOrganization, createOrganization, getCanCreateLocalOrg, getOverviewStats } from "@/src/services/base/organization";
2220

2321
export default function ProjectsList() {
2422
const dispatch = useDispatch();
@@ -33,12 +31,6 @@ export default function ProjectsList() {
3331
const [canCreateOrg, setCanCreateOrg] = useState(false);
3432
const [dataLoaded, setDataLoaded] = useState(false);
3533

36-
const [refetchProjects] = useLazyQuery(GET_PROJECT_LIST, { fetchPolicy: "no-cache" });
37-
const [refetchStats] = useLazyQuery(GET_OVERVIEW_STATS, { fetchPolicy: "cache-and-network" });
38-
const [refetchCanCreateOrg] = useLazyQuery(GET_CAN_CREATE_LOCAL_ORG, { fetchPolicy: "no-cache" });
39-
const [createOrgMut] = useMutation(CREATE_ORGANIZATION);
40-
const [addUserToOrgMut] = useMutation(ADD_USER_TO_ORGANIZATION);
41-
4234
useEffect(() => {
4335
dispatch(setLabelingTasksAll(null));
4436
dispatch(setOverviewFilters(null));
@@ -61,16 +53,16 @@ export default function ProjectsList() {
6153
}, [organizationInactive, user]);
6254

6355
function refetchProjectsAndPostProcess() {
64-
refetchProjects().then((res) => {
56+
getAllProjects((res) => {
6557
const projects = res.data["allProjects"].edges.map((edge: any) => edge.node);
6658
dispatch(setAllProjects(projects));
6759
setDataLoaded(true);
6860
});
6961
}
7062

7163
function refetchStatsAndPostProcess() {
72-
refetchStats().then((res) => {
73-
const stats = JSON.parse(res.data["overviewStats"]);
64+
getOverviewStats((res) => {
65+
const stats = res.data["overviewStats"];
7466
const statsDict = {};
7567
if (stats == null) return;
7668
stats.forEach((stat: ProjectStatistics) => {
@@ -88,17 +80,17 @@ export default function ProjectsList() {
8880
setDataLoaded(true);
8981
return;
9082
}
91-
refetchCanCreateOrg().then((res) => {
83+
getCanCreateLocalOrg(res => {
9284
const canCreate = res.data["canCreateLocalOrg"]
9385
setCanCreateOrg(canCreate);
9486
if (!canCreate) return;
9587
const localhostOrg = "localhost";
96-
createOrgMut({ variables: { name: localhostOrg } }).then((res) => {
97-
addUserToOrgMut({ variables: { userMail: user.mail, organizationName: localhostOrg } }).then((res) => {
88+
createOrganization(localhostOrg, () => {
89+
addUserToOrganization(user.mail, localhostOrg, () => {
9890
location.reload();
9991
setDataLoaded(true);
10092
});
101-
});
93+
})
10294
});
10395
}
10496

src/components/projects/SampleProjectsDropdown.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { Fragment, useCallback, useEffect, useRef, useState } from 'react'
22
import { Menu, Transition } from '@headlessui/react'
33
import { ChevronDownIcon } from '@heroicons/react/20/solid'
4-
import { useMutation } from '@apollo/client';
54
import { useRouter } from 'next/router';
65
import { useDispatch, useSelector } from 'react-redux';
76
import { selectAllProjects } from '@/src/reduxStore/states/project';
87
import { ModalButton, ModalEnum } from '@/src/types/shared/modal';
98
import { closeModal, openModal } from '@/src/reduxStore/states/modal';
109
import Modal from '../shared/modal/Modal';
1110
import { IconAlertTriangle, IconFishHook, IconMessageCircle, IconNews } from '@tabler/icons-react';
12-
import { CREATE_SAMPLE_PROJECT } from '@/src/services/gql/mutations/projects';
1311
import { setSearchGroupsStore } from '@/src/reduxStore/states/pages/data-browser';
1412
import { selectProjectIdSampleProject, setProjectIdSampleProject } from '@/src/reduxStore/states/tmp';
13+
import { createSampleProject } from '@/src/services/base/project';
1514

1615
const ACCEPT_BUTTON = { buttonCaption: "Create", closeAfterClick: false, useButton: true, disabled: true };
1716

@@ -26,8 +25,6 @@ export default function SampleProjectsDropdown() {
2625
const [projectTypeInput, setProjectTypeInput] = useState("");
2726
const [projectNameExists, setProjectNameExists] = useState(false);
2827

29-
const [createSampleProjectMut] = useMutation(CREATE_SAMPLE_PROJECT);
30-
3128
const importSampleProject = useCallback((projectName?: string, projectType?: string) => {
3229
const checkIfProjectExists = projects.find((project) => project.name === projectName);
3330
if (checkIfProjectExists) {
@@ -41,7 +38,7 @@ export default function SampleProjectsDropdown() {
4138
const projectTypeFinal = projectType ? projectType : projectTypeInput;
4239
dispatch(closeModal(ModalEnum.SAMPLE_PROJECT_TITLE));
4340
dispatch(setSearchGroupsStore({}));
44-
createSampleProjectMut({ variables: { name: projectNameFinal, projectType: projectTypeFinal } }).then((res) => {
41+
createSampleProject({ name: projectNameFinal, projectType: projectTypeFinal }, (res) => {
4542
dispatch(closeModal(ModalEnum.SAMPLE_PROJECT_TITLE));
4643
const projectId = res['data']['createSampleProject']['project'].id;
4744
dispatch(setProjectIdSampleProject(projectId));

src/components/projects/new/NewProject.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import { selectUploadData, setUploadFileType } from "@/src/reduxStore/states/upl
55
import Upload from "../../shared/upload/Upload";
66
import { CacheEnum, selectCachedValue } from "@/src/reduxStore/states/cachedValues";
77
import { setAllProjects } from "@/src/reduxStore/states/project";
8-
import { useLazyQuery } from "@apollo/client";
9-
import { GET_PROJECT_LIST } from "@/src/services/gql/queries/projects";
8+
import { getAllProjects } from "@/src/services/base/project";
109

1110
const UPLOAD_OPTION = { deleteProjectOnFail: true, tokenizerValues: [] };
1211
const COMPONENT_FILE_TYPE = UploadFileType.RECORDS_NEW;
@@ -17,11 +16,9 @@ export default function NewProject() {
1716

1817
const [uploadOptions, setUploadOptions] = useState<UploadOptions>(UPLOAD_OPTION);
1918

20-
const [refetchProjects] = useLazyQuery(GET_PROJECT_LIST, { fetchPolicy: "no-cache" });
21-
2219
useEffect(() => {
2320
dispatch(setUploadFileType(COMPONENT_FILE_TYPE));
24-
refetchProjects().then((res) => {
21+
getAllProjects((res) => {
2522
const projects = res.data["allProjects"].edges.map((edge: any) => edge.node);
2623
dispatch(setAllProjects(projects));
2724
});

0 commit comments

Comments
 (0)