diff --git a/client/package.json b/client/package.json
index a99e08d2d..b90f62462 100644
--- a/client/package.json
+++ b/client/package.json
@@ -38,8 +38,7 @@
"use-immer": "^0.11.0",
"uuid": "^8.3.2",
"vite": "^7.1.11",
- "vite-plugin-eslint2": "^5.0.4",
- "web-vitals": "^2.1.4"
+ "vite-plugin-eslint2": "^5.0.4"
},
"scripts": {
"start": "vite",
@@ -85,4 +84,4 @@
"typescript-eslint": "^8.39.0",
"vite-bundle-analyzer": "^1.2.0"
}
-}
\ No newline at end of file
+}
diff --git a/client/src/AppRouter.tsx b/client/src/AppRouter.tsx
index de399d2cd..56c92a7c9 100644
--- a/client/src/AppRouter.tsx
+++ b/client/src/AppRouter.tsx
@@ -8,8 +8,6 @@ import LogoutPromptPage from "./pages/both/logout/LogoutPromptPage";
import TermsPage from "./pages/both/policy/TermsPage";
import UserSettingsPage from "./pages/both/user_page/user_settings/UserSettingsPage";
import UserTraingingsPage from "./pages/both/user_page/user_trainings/UserTrainingsPage";
-import StorefrontPage from "./pages/lab_management/storefront/StorefrontPage";
-import StorefrontPreviewPage from "./pages/lab_management/storefront_preview/StorefrontPreviewPage";
import HelpPage from "./pages/maker/signup/HelpPage";
import SignupPage from "./pages/maker/signup/SignupPage";
import MakerspacePage from "./pages/makerspace_page/MakerspacePage";
@@ -26,7 +24,6 @@ import NewAnnouncementPage from "./pages/lab_management/announcements/NewAnnounc
import StaffBar from "./pages/makerspace_page/StaffBar";
import UsersPage from "./pages/lab_management/users/UsersPage";
import UserPage from "./pages/lab_management/users/UserPage";
-import { CartListPage } from "./pages/lab_management/storefront/internal/CartListPage";
import TrainingModulesPage from "./pages/lab_management/training_modules/TrainingModulesPage";
import NewModulePage from "./pages/lab_management/edit_module/NewModulePage";
import EditActiveModulePage from "./pages/lab_management/edit_module/EditActiveModulePage";
@@ -37,7 +34,6 @@ import OrganizationsPage from "./pages/lab_management/organizations/Organization
import ManageMakerspacePage from "./pages/makerspace_page/ManageMakerspacePage";
import CurrencyPage from "./pages/lab_management/currency/CurrencyPage";
import ManageRoomPage from "./pages/makerspace_page/MonitorRoomPage";
-import { CartPage } from "./pages/lab_management/storefront/internal/CartPage";
import ManageEquipmentPage from "./pages/makerspace_page/equipment_pages/ManageEquipmentPage";
import ReservationRequestPage from "./pages/makerspace_page/reservation_pages/ReservationRequestPage";
import ManageReservationsPage from "./pages/makerspace_page/reservation_pages/ManageReservationsPage";
@@ -119,7 +115,6 @@ export const routes = [
element: ,
children: [
{ path: "/signup", element: },
- { path: "/admin/storefront/preview", element: },
/* Routes for the static displays around the makerspaces */
{
@@ -141,7 +136,6 @@ export const routes = [
{ path: "/makerspace/:makerspaceID", element: },
{ path: "/terms", element: },
{ path: "/help", element: },
- { path: "/storefront", element: },
/* Routes that need to be protected by auth */
{
@@ -162,8 +156,6 @@ export const routes = [
children: [
{ path: "/makerspace/:makerspaceID/people", element: },
{ path: "/makerspace/:makerspaceID/people/:userID", element: },
- { path: "/makerspace/:makerspaceID/storefront/carts", element: },
- { path: "/makerspace/:makerspaceID/storefront/carts/:cartID", element: },
/* Routes for staff + higher */
{
@@ -241,8 +233,6 @@ export const routes = [
},
/* END OF PROTECTED ROUTES */
- { path: "/storefront", element: },
-
{ path: "/logoutprompt", element: },
{ path: "*", element: },
diff --git a/client/src/common/ClientOnly.tsx b/client/src/common/ClientOnly.tsx
deleted file mode 100644
index 23b7dc2df..000000000
--- a/client/src/common/ClientOnly.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { useState, useEffect, ReactNode } from 'react';
-
-interface ClientOnlyProps {
- children: ReactNode;
- fallback?: ReactNode;
-}
-
-export default function ClientOnly(props: ClientOnlyProps) {
- // 1. Start with a state that says "we are not in the browser yet"
- const [hasMounted, setHasMounted] = useState(false);
-
- useEffect(() => {
- setHasMounted(true);
- }, []);
-
- // 3. During the server render, we return the fallback (or nothing).
- if (!hasMounted) {
- return props.fallback;
- }
-
- // 4. On the client, after the first paint, we render the actual component.
- return props.children;
-}
\ No newline at end of file
diff --git a/client/src/common/DeleteButton.tsx b/client/src/common/DeleteButton.tsx
deleted file mode 100644
index 597e88b3c..000000000
--- a/client/src/common/DeleteButton.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import DeleteIcon from '@mui/icons-material/Delete';
-import ActionButton from "./ActionButton";
-
-interface DeleteButtonProps {
- appearance: "icon-only" | "small" | "medium" | "large";
- handleClick: () => Promise;
- loading: boolean;
- tooltipText: string;
-}
-
-export default function DeleteButton(props: DeleteButtonProps) {
- return (
-
-
-
- )
-}
\ No newline at end of file
diff --git a/client/src/common/InvItemCount.tsx b/client/src/common/InvItemCount.tsx
deleted file mode 100644
index 3b78baf8b..000000000
--- a/client/src/common/InvItemCount.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import React from "react";
-import InventoryItem from "../types/InventoryItem";
-import { Typography, TypographyProps } from "@mui/material";
-
-interface InvItemCountProps extends TypographyProps {
- item: InventoryItem;
- count?: number; // if not specified, we'll use the count from the item object
-}
-
-export default function InvItemCount({
- item,
- count = item.count,
- ...otherProps
-}: InvItemCountProps) {
- return (
-
- {count} {count === 1 ? item.unit : item.pluralUnit} remaining.
-
- );
-}
diff --git a/client/src/common/InvItemNamePic.tsx b/client/src/common/InvItemNamePic.tsx
deleted file mode 100644
index 78341436f..000000000
--- a/client/src/common/InvItemNamePic.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import InventoryItem from "../types/InventoryItem";
-import { Stack, Typography } from "@mui/material";
-
-interface InventoryItemNamePicProps {
- item: InventoryItem;
-}
-
-export default function InvItemName({ item }: InventoryItemNamePicProps) {
- return (
-
- {item.name}
-
- );
-}
diff --git a/client/src/common/PreviewInventoryRow.tsx b/client/src/common/PreviewInventoryRow.tsx
deleted file mode 100644
index 9c6dad332..000000000
--- a/client/src/common/PreviewInventoryRow.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from "react";
-import InventoryItem from "../types/InventoryItem";
-import { Stack, Typography } from "@mui/material";
-import InvItemName from "./InvItemNamePic";
-import InvItemCount from "./InvItemCount";
-
-interface InventoryRowProps {
- item: InventoryItem;
-}
-
-export default function InventoryRow({ item }: InventoryRowProps) {
- return (
-
-
-
-
-
-
- ${item.pricePerUnit.toFixed(2)} per {item.unit}
-
-
- );
-}
diff --git a/client/src/common/TrainingModuleRow.tsx b/client/src/common/TrainingModuleRow.tsx
deleted file mode 100644
index e54093f0a..000000000
--- a/client/src/common/TrainingModuleRow.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import React from "react";
-import { CardActionArea, Stack, Typography } from "@mui/material";
-import WarningIcon from "@mui/icons-material/Warning";
-import CheckCircleIcon from "@mui/icons-material/CheckCircle";
-import CloseIcon from "@mui/icons-material/Close";
-import HourglassBottomIcon from '@mui/icons-material/HourglassBottom';
-import LockClockIcon from '@mui/icons-material/LockClock';
-import { format, parseISO } from "date-fns";
-import { useNavigate } from "react-router-dom";
-import { ModuleStatus } from "./TrainingModuleUtils";
-
-interface RequiredModuleProps {
- moduleStatus: ModuleStatus;
-}
-
-export default function TrainingModuleRow({
- moduleStatus,
-}: RequiredModuleProps) {
- const navigate = useNavigate();
-
- return (
- navigate(`/maker/training/${moduleStatus.moduleID}`)}
- >
-
- {moduleStatus.status === "Passed" && (
-
- )}
- {moduleStatus.status === "Expired" && }
- {moduleStatus.status === "Not taken" && }
- {moduleStatus.status === "Expiring Soon" && }
- {moduleStatus.status === "Locked" && }
-
-
- {
- moduleStatus.status === "Locked"
- ? "Locked Until Tomorrow"
- : moduleStatus.status
- }
-
-
- {moduleStatus.moduleName}
-
- {moduleStatus.status === "Expiring Soon" && (
-
- Exp Date:
-
- {format(parseISO(moduleStatus.expirationDate), "MM/dd/yyyy")}
-
-
- )}
-
- {moduleStatus.status === "Passed" && (
-
- {format(parseISO(moduleStatus.submissionDate), "MM/dd/yyyy")}
-
- )}
-
-
- );
-}
diff --git a/client/src/common/UseCurrentUser.ts b/client/src/common/UseCurrentUser.ts
deleted file mode 100644
index e69de29bb..000000000
diff --git a/client/src/pages/lab_management/storefront/AddToCartModal.tsx b/client/src/pages/lab_management/storefront/AddToCartModal.tsx
deleted file mode 100644
index d3708f440..000000000
--- a/client/src/pages/lab_management/storefront/AddToCartModal.tsx
+++ /dev/null
@@ -1,113 +0,0 @@
-import {
- Alert,
- Avatar,
- Button,
- Collapse,
- Divider,
- Stack,
- TextField,
- Typography,
-} from "@mui/material";
-import InventoryItem from "../../../types/InventoryItem";
-import PrettyModal from "../../../common/PrettyModal";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-
-interface AddToCartModalProps {
- open: boolean;
- count: number;
- setCount: (count: number) => void;
- addToCart: () => void;
- onClose: () => void;
- item: InventoryItem;
-}
-
-export default function AddToCartModal({
- open,
- count,
- setCount,
- addToCart,
- onClose,
- item,
-}: AddToCartModalProps) {
- const cost = count * item.pricePerUnit || 0;
-
- const validCost = cost > 0;
- const enoughInInventory = count <= item.count;
-
- const tryAddToCart = () => {
- if (!validCost || !enoughInInventory) return;
-
- addToCart();
- onClose();
- };
-
- const isMobile = useIsMobile();
-
- return (
-
-
-
- Add to shopping cart
-
-
-
-
-
-
- {item.name}
-
-
-
-
-
- {
- if (key === "Enter") tryAddToCart();
- }}
- onChange={(e) => {
- setCount(parseInt(e.target.value));
- }}
- />
- {item.pluralUnit}
-
-
-
- x ${item.pricePerUnit.toFixed(2)} per {item.unit}
-
-
-
-
-
- ${cost.toFixed(2)}
-
-
-
-
-
- Only {item.count} {item.pluralUnit} left in inventory
-
-
-
-
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront/CheckoutModal.tsx b/client/src/pages/lab_management/storefront/CheckoutModal.tsx
deleted file mode 100644
index c6d56207b..000000000
--- a/client/src/pages/lab_management/storefront/CheckoutModal.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import PrettyModal from "../../../common/PrettyModal";
-import { Button, Divider, Stack, Typography } from "@mui/material";
-import { ShoppingCartEntry } from "./StorefrontPage";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-
-interface CheckoutModalProps {
- open: boolean;
- groupedEntries: Record;
- totalCost: string;
- onClose: () => void;
- onFinalize: (checkoutNotes: string) => void;
-}
-
-export default function CheckoutModal({
- open,
- onClose,
- groupedEntries,
- totalCost,
- onFinalize,
-}: CheckoutModalProps) {
-
- const isMobile = useIsMobile();
-
-
-
- return (
-
-
- Checkout
-
- Review your items before checking out:
- {Object.entries(groupedEntries).map(([makerspaceID, entries]) => (
-
- {entries[0].item.makerspace?.name || "Unknown Makerspace"}
- {entries.map((entry) => (
-
-
- {entry.item.name}
- ({entry.count > 1 && (`${entry.item.pricePerUnit.toFixed(2)} `)}x {entry.count})
-
- ${(entry.item.pricePerUnit * entry.count).toFixed(2)}
-
- ))}
-
- ))}
-
-
- Total Cost:
- ${totalCost}
-
-
-
- The amount of ${totalCost} will be charged to your Construct Credits account balance.
- Please ensure you have sufficient funds before proceeding.
- To add or view funds, visit the RIT Tiger Spend site.
- This transaction will be canceled if you do not have enough funds.
- Pickup instructions will be shown after successful payment.
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront/CheckoutSuccessModal.tsx b/client/src/pages/lab_management/storefront/CheckoutSuccessModal.tsx
deleted file mode 100644
index cacf3616f..000000000
--- a/client/src/pages/lab_management/storefront/CheckoutSuccessModal.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import PrettyModal from "../../../common/PrettyModal";
-import { Typography, Divider, Card, CardHeader, CardContent } from "@mui/material";
-import { Stack } from "@mui/system";
-import { ShoppingCartEntry } from "./StorefrontPage";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-
-interface CheckoutSuccessModalProps {
- open: boolean;
- groupedEntries: Record;
- onClose: () => void;
-}
-
-enum PickupInstructions {
- A_LEVEL = "Stop at the front desk of the Atrium Level Makerspace and state that you're here for pickup.",
- GENERAL = "Stop at the front desk of the General Makerspace on the 1st floor and tell an employee that you're here for pickup.",
- T_AND_E = "Stop at the front desk of the Textiles & Electronics Makerspace on the 2nd floor and tell an employee that you're here for pickup."
-}
-
-export default function CheckoutSuccessModal({
- open,
- onClose,
- groupedEntries,
-}: CheckoutSuccessModalProps) {
- const isMobile = useIsMobile();
-
-
-
- return (
-
- Purchase Successful
-
- Thank you for your purchase! A receipt will be sent to your RIT Email shortly.
- Please review the pickup instructions for each of your items:
- {Object.entries(groupedEntries).map(([makerspaceID, entries]) => (
-
- {entries[0].item.makerspace?.id == 36 && PickupInstructions.A_LEVEL}
- {entries[0].item.makerspace?.id == 37 && PickupInstructions.GENERAL}
- {entries[0].item.makerspace?.id == 38 && PickupInstructions.T_AND_E})} />
-
-
-
-
-
- {entries.map((entry) => (
-
- {entry.item.name}
- (x {entry.count})
-
- ))}
-
-
- ))}
-
- )
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/InternalUseModal.tsx b/client/src/pages/lab_management/storefront/InternalUseModal.tsx
deleted file mode 100644
index f92c7f093..000000000
--- a/client/src/pages/lab_management/storefront/InternalUseModal.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { useState } from "react";
-import PrettyModal from "../../../common/PrettyModal";
-import { Button, Stack, TextareaAutosize, Typography } from "@mui/material";
-import InventoryIcon from "@mui/icons-material/Inventory";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-
-interface CheckoutModalProps {
- open: boolean;
- onClose: () => void;
- onFinalize: (checkoutNotes: string, recievingUserID: number | undefined) => void;
-}
-
-export default function UseModal({
- open,
- onClose,
- onFinalize,
-}: CheckoutModalProps) {
- const [notes, setNotes] = useState("")
-
- function handleNotesChanged(e: any) {
- setNotes(e.target.value);
- }
- const isMobile = useIsMobile();
-
-
- return (
-
-
-
-
- Note: Internal Items should not be given or sold without staff approval.
-
-
-
-
-
-
- Add a note below to describe how/where the items are being used and then click Update Inventory.
-
- }
- onClick={() => onFinalize(notes, undefined)}
- >
- Update inventory
-
-
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront/ListingCard.tsx b/client/src/pages/lab_management/storefront/ListingCard.tsx
deleted file mode 100644
index 5aaeeac31..000000000
--- a/client/src/pages/lab_management/storefront/ListingCard.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Button, Card, CardActionArea, CardActions, CardContent, CardMedia, Typography } from "@mui/material";
-import InventoryItem from "../../../types/InventoryItem";
-import { Stack } from "@mui/system";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-import { useCurrentUser } from "../../../common/CurrentUserProvider";
-import { makeCDNLink } from "../../../common/ImageFinder.js";
-
-interface ListingCardProps {
- item: InventoryItem
- setActiveItem: (item: InventoryItem) => void;
- openDetailsModal: (item: InventoryItem) => void;
-}
-
-export function ListingCard(props: ListingCardProps) {
- const currentUser = useCurrentUser();
- const isMobile = useIsMobile();
-
- return (
-
- props.openDetailsModal(props.item)}>
- {!isMobile && }
-
- {props.item.name}
- {props.item.makerspace?.name}
-
- ${props.item.pricePerUnit.toFixed(2)} / {props.item.unit}
- {props.item.count} {props.item.count == 1 ? props.item.unit : props.item.pluralUnit}
-
-
-
-
-
- {props.item.count > 0
- ?
- : }
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/ListingModal.tsx b/client/src/pages/lab_management/storefront/ListingModal.tsx
deleted file mode 100644
index 737bde656..000000000
--- a/client/src/pages/lab_management/storefront/ListingModal.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-import { Box, Stack } from "@mui/system";
-import PrettyModal from "../../../common/PrettyModal";
-import InventoryItem from "../../../types/InventoryItem";
-import { Button, Divider, TextField, Typography } from "@mui/material";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-import { isStaff } from "../../../common/PrivilegeUtils";
-import { useCurrentUser } from "../../../common/CurrentUserProvider";
-import { useState } from "react";
-import { makeCDNLink } from "../../../common/ImageFinder.js";
-import ThemedMarkdown from "../../../common/ThemedMarkdown.js";
-
-interface ListingModalProps {
- item: InventoryItem;
- open: boolean;
- addToCart: (activeItem: InventoryItem, addToCartCount: number) => void;
- onClose: () => void;
-}
-
-export function ListingModal(props: ListingModalProps) {
- const isMobile = useIsMobile();
- const currentUser = useCurrentUser();
-
- const [count, setCount] = useState(1);
-
- const cost = count * props.item.pricePerUnit || 0;
-
- const validCost = cost > 0;
- const enoughInInventory = count <= props.item.count;
-
- const tryAddToCart = () => {
- if (!validCost || !enoughInInventory) return;
-
- props.addToCart(props.item, count);
- props.onClose();
- };
-
- return (
-
-
-
-
-
-
-
-
- {props.item.name}
-
-
-
- {props.item.description && props.item.description !== "" ? (
- {props.item.description}
- ) : (
- No description.
- )}
-
-
- {isStaff(currentUser) && props.item.notes !== "" && (
-
-
- Internal Details
-
-
- {props.item.notes}
-
-
- )}
-
-
-
-
-
-
- {
- if (key === "Enter") tryAddToCart();
- }}
- onChange={(e) => {
- setCount(parseInt(e.target.value));
- }}
- />
- {props.item.pluralUnit}
-
-
- x ${props.item.pricePerUnit.toFixed(2)} per {props.item.unit}
-
-
-
-
-
- ${cost.toFixed(2)}
-
-
- 0 ? (props.item.count < props.item.threshold ? "warning" : "success") : "error"}>
- {props.item.count > 0 ? <>{props.item.count} available> : "Out of stock"}
-
- {props.item.count > 0
- ?
- : }
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/ShoppingCart.tsx b/client/src/pages/lab_management/storefront/ShoppingCart.tsx
deleted file mode 100644
index e32da5bc4..000000000
--- a/client/src/pages/lab_management/storefront/ShoppingCart.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-import { useState } from "react";
-import { ShoppingCartEntry } from "./StorefrontPage";
-import ShoppingCartIcon from "@mui/icons-material/ShoppingCart";
-import { Button, Divider, Stack, Typography } from "@mui/material";
-import ShoppingCartRow from "./ShoppingCartRow";
-import CheckoutModal from "./CheckoutModal";
-import EmptyPageSection from "../../../common/EmptyPageSection";
-import UseModal from "./InternalUseModal";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-import { Box } from "@mui/system";
-
-interface ShoppingCartProps {
- entries: ShoppingCartEntry[];
- removeEntry: (id: string) => void;
- setEntryCount: (id: string, newCount: number) => void;
- emptyCart: (checkoutNotes: string, recievingUserID?: number) => void;
- internal: boolean;
-}
-
-export default function ShoppingCart({
- entries,
- removeEntry,
- setEntryCount,
- emptyCart,
- internal,
-}: ShoppingCartProps) {
- const isMobile = useIsMobile();
-
- const [showCheckoutModal, setShowCheckoutModal] = useState(false);
-
- const total = entries
- .reduce((acc, { count, item }) => acc + count * item.pricePerUnit, 0)
- .toFixed(2);
-
-
- const groupedEntries = entries.reduce((groups: Record, entry: ShoppingCartEntry) => {
- const key: number = entry.item.makerspaceID;
- if (!groups[key]) {
- groups[key] = [];
- }
- groups[key].push(entry);
- return groups;
- }, {});
-
- const groupedEntriesMapping = Object.entries(groupedEntries).map(([makerspaceID, entries]) => (
-
-
- {entries[0].item.makerspace?.name || "Unknown Makerspace"}
-
- {entries.map((entry) => (
- removeEntry(entry.id)}
- setEntryCount={(newCount: number) =>
- setEntryCount(entry.id, newCount)
- }
- />
- ))}
-
- ));
-
- return (
- <>
-
- Cart
-
-
- {entries.length === 0 && (
- }
- label="Cart empty."
- />
- )}
-
- }>
- {groupedEntriesMapping}
-
-
- {entries.length > 0 && (
-
-
- ${total}
-
-
-
- )}
-
- {internal
- ? setShowCheckoutModal(false)}
- onFinalize={(checkoutNotes: string, recievingUserID: number | undefined) => {
- setShowCheckoutModal(false);
- emptyCart(checkoutNotes, recievingUserID);
- }}
- />
- : setShowCheckoutModal(false)}
- onFinalize={(checkoutNotes: string) => {
- setShowCheckoutModal(false);
- emptyCart(checkoutNotes);
- }}
- groupedEntries={groupedEntries}
- totalCost={total}
- />}
- >
- );
-}
diff --git a/client/src/pages/lab_management/storefront/ShoppingCartRow.tsx b/client/src/pages/lab_management/storefront/ShoppingCartRow.tsx
deleted file mode 100644
index a054de752..000000000
--- a/client/src/pages/lab_management/storefront/ShoppingCartRow.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import React from "react";
-import {
- IconButton,
- Stack,
- TextField,
- Typography,
-} from "@mui/material";
-import { ShoppingCartEntry } from "./StorefrontPage";
-import CloseIcon from "@mui/icons-material/Close";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-
-interface ShoppingCartRowProps {
- shoppingCartEntry: ShoppingCartEntry;
- removeEntry: () => void;
- setEntryCount: (newCount: number) => void;
-}
-
-export default function ShoppingCartRow({
- shoppingCartEntry,
- removeEntry,
- setEntryCount,
-}: ShoppingCartRowProps) {
- const isMobile = useIsMobile();
- const { item, count } = shoppingCartEntry;
-
- return !isMobile ? (
-
-
-
-
-
-
-
- {item.name}
-
-
-
-
- setEntryCount(parseInt(e.target.value))}
- />
-
-
- {count === 1 ? item.unit : item.pluralUnit}
-
-
-
-
- ${(count * item.pricePerUnit).toFixed(2)}
-
-
- ) : (
-
-
-
-
-
-
-
-
- {item.name}
-
-
-
-
- setEntryCount(parseInt(e.target.value))}
- />
-
-
- {count === 1 ? item.unit : item.pluralUnit}
-
-
-
-
- ${(count * item.pricePerUnit).toFixed(2)}
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront/StorefrontPage.tsx b/client/src/pages/lab_management/storefront/StorefrontPage.tsx
deleted file mode 100644
index a2701e3a3..000000000
--- a/client/src/pages/lab_management/storefront/StorefrontPage.tsx
+++ /dev/null
@@ -1,255 +0,0 @@
-import { useCallback, useEffect, useState } from "react";
-import { Box, Divider, Snackbar, Stack, Switch, Typography } from "@mui/material";
-import SearchBar from "../../../common/SearchBar";
-import InventoryItem from "../../../types/InventoryItem";
-import AddToCartModal from "./AddToCartModal";
-import { useImmer } from "use-immer";
-import ShoppingCart from "./ShoppingCart";
-import { v4 as uuidv4 } from "uuid";
-import { gql } from "@apollo/client";
-import { useMutation, useQuery } from "@apollo/client/react";
-import RequestWrapper from "../../../common/RequestWrapper";
-import { GET_INVENTORY_ITEMS } from "../../../queries/inventoryQueries";
-import { useCurrentUser } from "../../../common/CurrentUserProvider";
-import { isAdmin, isManager, isStaff } from "../../../common/PrivilegeUtils";
-import Page from "../../Page";
-import { ListingCard } from "./ListingCard";
-import { ListingModal } from "./ListingModal";
-import { useIsMobile } from "../../../common/IsMobileProvider";
-import { GET_MAKERSPACES_WITH_ITEMS, MakerspaceWithItems } from "../../../queries/makerspaceQueries";
-import CheckoutSuccessModal from "./CheckoutSuccessModal";
-import { useLocation, useNavigate } from "react-router-dom";
-import { useMakeTheme } from "../../../common/MakeThemeProvider";
-
-
-const CHECKOUT_ITEMS = gql`
- mutation CheckoutItems($items: [CartItem], $notes: String) {
- checkoutItems(items: $items, notes: $notes)
- }
-`;
-
-export interface ShoppingCartEntry {
- id: string;
- item: InventoryItem;
- count: number;
- makerspace: number;
-}
-
-function updateLocalStorage(cart: ShoppingCartEntry[] | null) {
- localStorage.setItem("cart", JSON.stringify(cart));
-}
-
-export default function StorefrontPage() {
- const currentUser = useCurrentUser();
- const isMobile = useIsMobile();
- const navigate = useNavigate();
- const makeTheme = useMakeTheme();
- const { search } = useLocation();
-
- const { loading, error, data } = useQuery(GET_MAKERSPACES_WITH_ITEMS, { variables: { storefrontVisible: isStaff(currentUser) ? null : true } });
-
- const [checkoutItems] = useMutation(CHECKOUT_ITEMS, {
- refetchQueries: [{ query: GET_INVENTORY_ITEMS }],
- });
-
- const [searchText, setSearchText] = useState("");
- const [showModal, setShowModal] = useState(false);
- const [showDetailsModal, setShowDetailsModal] = useState(false);
- const [activeItem, setActiveItem] = useState();
- const [addToCartCount, setAddToCartCount] = useState(0);
- const [shoppingCart, setShoppingCart] = useImmer([]);
- const [purchasedItems, setPurchasedItems] = useImmer([]);
-
-
- const [showInternalItems, setShowInternalItems] = useState(false);
- const [showStaffItems, setShowStaffItems] = useState(false);
-
- const [checkoutFailureSnackbarOpen, setCheckoutFailureSnackbarOpen] = useState(false);
- const [checkoutSuccessModalOpen, setCheckoutSuccessModalOpen] = useState(false);
-
- function handleShowInternalChange(_e: any) {
- setShowInternalItems(!showInternalItems)
- }
-
- function handleShowStaffChange(_e: any) {
- setShowStaffItems(!showStaffItems)
- }
-
- const setUrlParam = (paramName: string, paramValue: string) => {
- const params = new URLSearchParams(search);
- params.set(paramName, paramValue);
- navigate(`/storefront?` + params, { replace: true });
- };
- useEffect(() => {
- const searchParams = new URLSearchParams(search);
- const queryString = searchParams.get("a") ?? "";
-
- setSearchText(queryString)
- }, [search]);
-
- const getCartFromStorage = useCallback(() => {
- const storedCart = localStorage.getItem("cart");
- const parsedCart = storedCart && JSON.parse(storedCart);
- setShoppingCart(parsedCart || []);
- }, [setShoppingCart]);
-
- useEffect(() => {
- // Load the cart on page load
- getCartFromStorage();
-
- // Load the cart whenever localstorage changes
- window.addEventListener("storage", getCartFromStorage);
- }, [getCartFromStorage]);
-
- const addToShoppingCart = (item: InventoryItem, count: number) =>
- setShoppingCart((draft) => {
- const existing = shoppingCart.find((row) => row.item.id === item.id)
- if (!existing) {
- draft.push({
- id: uuidv4(),
- item,
- count,
- makerspace: item.makerspaceID ?? item.makerspace?.id
- });
- } else {
- existing.count += count;
- }
-
- updateLocalStorage(draft);
- });
-
- const removeFromShoppingCart = (id: string) =>
- setShoppingCart((draft) => {
- const index = draft.findIndex((e: ShoppingCartEntry) => e.id === id);
- draft.splice(index, 1);
- updateLocalStorage(draft);
- });
-
- const setEntryCount = (id: string, newCount: number) =>
- setShoppingCart((draft) => {
- const index = draft.findIndex((e: ShoppingCartEntry) => e.id === id);
-
- const valid = newCount > 0 && newCount <= draft[index].item.count;
- if (!valid) return;
-
- draft[index].count = newCount;
-
- updateLocalStorage(draft);
- });
-
- const handleCheckout = async (checkoutNotes: string, _recievingUserID?: number) => {
- const items: { id: number, count: number }[] = shoppingCart.map((cartItem) => ({ id: cartItem.item.id, count: cartItem.count }));
-
- const success = await checkoutItems({
- variables: {
- items,
- notes: checkoutNotes,
- },
- });
-
- if (success) {
- setPurchasedItems(shoppingCart);
- setCheckoutSuccessModalOpen(true);
- setShoppingCart(() => []);
- updateLocalStorage([]);
- }
- };
-
- return (
-
-
- {`Storefront | ${makeTheme.title}`}
-
- {(currentUser.visitor == false && import.meta.env.VITE_DISABLE_STOREFRONT_CART === "false") && }
-
- {isAdmin(currentUser) &&
-
-
-
- Internal Use Items
-
-
- Staff Only Items
-
-
-
- }
-
-
- setSearchText(e.target.value)}
- onSubmit={() => setUrlParam("a", searchText)}
- onClear={() => setSearchText("")}
- />
-
- } sx={{ width: "100%" }}>
- {data?.makerspaces?.map((space: MakerspaceWithItems) => (
-
- {space.name}
-
- {space.items.filter((item: InventoryItem) => {
- const matchesSearch = item.name.toLowerCase().includes(searchText.toLowerCase());
- const isVisible = item.storefrontVisible || (showInternalItems && item.staffOnly) || (showStaffItems && item.staffOnly);
- return matchesSearch && isVisible;
- }).map((item: InventoryItem) => (
- { setActiveItem(item); setShowModal(true) }}
- openDetailsModal={(item) => { setActiveItem(item); setShowDetailsModal(true) }}
- />
- ))}
-
-
- ))}
-
-
- {activeItem && showModal && (
- addToShoppingCart(activeItem, addToCartCount)}
- onClose={() => setShowModal(false)}
- item={activeItem}
- />
- )}
- {activeItem && showDetailsModal && (
- addToShoppingCart(activeItem, addToCartCount)}
- onClose={() => setShowDetailsModal(false)} />
- )}
-
- setCheckoutFailureSnackbarOpen(false)}
- message="Checkout failed. Please make sure you have sufficient funds and then try again."
- />
- setCheckoutSuccessModalOpen(false)}
- groupedEntries={purchasedItems.reduce((groups: Record, entry: ShoppingCartEntry) => {
- const key: number = entry.item.makerspaceID;
- if (!groups[key]) {
- groups[key] = [];
- }
- groups[key].push(entry);
- return groups;
- }, {})}
- />
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront/internal/CancelCartModal.tsx b/client/src/pages/lab_management/storefront/internal/CancelCartModal.tsx
deleted file mode 100644
index 94f231309..000000000
--- a/client/src/pages/lab_management/storefront/internal/CancelCartModal.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { Typography, Button } from "@mui/material";
-import { Box, Stack } from "@mui/system";
-import PrettyModal from "../../../../common/PrettyModal";
-
-interface PickupModalProps {
- open: boolean;
- onClose: () => void;
- onConfirm: () => void;
-}
-
-export function CancelCartModal({ open, onClose, onConfirm }: PickupModalProps) {
- if (!open) return null;
-
- return (
-
- Confirm Item Pickup
-
- Confirm cancellation of this cart?
- This action cannot be undone. All items will be restocked to inventory, and a full refund will be sent to the consumer account.
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/internal/CartListPage.tsx b/client/src/pages/lab_management/storefront/internal/CartListPage.tsx
deleted file mode 100644
index 0fa43c805..000000000
--- a/client/src/pages/lab_management/storefront/internal/CartListPage.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import { Box, Button } from "@mui/material";
-import PageSectionHeader from "../../../../common/PageSectionHeader";
-import { Stack } from "@mui/system";
-import { DataGrid, GridColDef } from "@mui/x-data-grid";
-import AuditLogEntity from "../../audit_logs/AuditLogEntity";
-import { useQuery } from "@apollo/client/react";
-import { GET_CARTS } from "../../../../queries/cartQueries";
-import { InventoryCart } from "../../../../types/InventoryCart";
-import { useEffect, useState } from "react";
-import { GET_MAKERSPACES } from "../../../../queries/makerspaceQueries";
-import { Checkbox, FormControlLabel, FormGroup, TextField, CircularProgress } from "@mui/material";
-import { useLocation, useNavigate, useParams } from "react-router-dom";
-import { useMakeTheme } from "../../../../common/MakeThemeProvider";
-
-export function CartListPage() {
- const navigate = useNavigate();
- const { makerspaceID } = useParams<{ makerspaceID: string }>();
- const makeTheme = useMakeTheme();
- const { search } = useLocation();
-
- const getCartsResult = useQuery(GET_CARTS, { pollInterval: 10000 });
- const getMakerspacesResult = useQuery(GET_MAKERSPACES);
-
- const [filteredMakerspaces, setFilteredMakerspaces] = useState(makerspaceID ? [parseInt(makerspaceID)] : []);
- const [userSearch, setUserSearch] = useState("");
-
- const makerspaces = getMakerspacesResult.data?.makerspaces || [];
- const rows: InventoryCart[] = getCartsResult.data?.carts || [];
-
- // Filtering logic
- const filteredRows = rows.filter((cart) => {
- // Makerspace filter
- const makerspaceMatch = filteredMakerspaces.length === 0 || filteredMakerspaces.includes(Number(cart.makerspace.id));
- // User filter (search by first, last, or username)
- const userString = `${cart.user.firstName} ${cart.user.lastName} ${cart.user.ritUsername}`.toLowerCase();
- const userMatch = userString.includes(userSearch.toLowerCase());
- return makerspaceMatch && userMatch;
- });
-
- const setUrlParam = (paramName: string, paramValue: string) => {
- const params = new URLSearchParams(search);
- params.set(paramName, paramValue);
- navigate(`/makerspace/${makerspaceID}/storefront/carts?` + params, { replace: true });
- };
- useEffect(() => {
- const searchParams = new URLSearchParams(search);
- const queryString = searchParams.get("a") ?? "";
-
- setUserSearch(queryString)
- }, [search]);
-
- const columns: GridColDef<(typeof rows)[number]>[] = [
- {
- field: "id",
- headerName: "ID",
- width: 50,
- },
- {
- field: "user",
- headerName: "User",
- width: 300,
- renderCell: (params) => ,
- },
- {
- field: "makerspace",
- headerName: "Makerspace",
- width: 250,
- renderCell: (params) => ,
- },
- {
- field: "actions",
- headerName: "Actions",
- width: 250,
- renderCell: (params) => (
-
-
-
- ),
- },
- {
- field: "lastModified",
- headerName: "Last Updated",
- width: 220,
- valueGetter: (value) => new Date(value).toLocaleString(),
- },
- ];
-
- return (
-
- {`Carts | ${makeTheme.title}`}
-
- Active Carts
-
-
- {/* Makerspace Filter */}
-
- {getMakerspacesResult.loading ? : makerspaces.map((space: { id: number, name: string }) => (
- {
- setFilteredMakerspaces((prev) =>
- e.target.checked
- ? [...prev, Number(space.id)]
- : prev.filter((id) => id !== Number(space.id))
- );
- }}
- />
- }
- label={space.name}
- />
- ))}
-
- {/* User Search Filter */}
- setUserSearch(e.target.value)}
- onSubmit={() => setUrlParam("a", userSearch)}
- size="small"
- />
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/internal/CartPage.tsx b/client/src/pages/lab_management/storefront/internal/CartPage.tsx
deleted file mode 100644
index c14612c9d..000000000
--- a/client/src/pages/lab_management/storefront/internal/CartPage.tsx
+++ /dev/null
@@ -1,186 +0,0 @@
-import { useMutation, useQuery } from "@apollo/client/react";
-import { CANCEL_CART, COMPLETE_CART, GET_CART } from "../../../../queries/cartQueries";
-import { DataGrid, GridColDef } from "@mui/x-data-grid";
-import { Button, Snackbar, Stack, Typography } from "@mui/material";
-import { CartItem } from "../../../../types/InventoryCart";
-import { useState } from "react";
-import Page from "../../../Page";
-import RequestWrapper from "../../../../common/RequestWrapper";
-import { RefundModal } from "./RefundModal";
-import { ConfirmPickupModal } from "./ConfirmPickupModal";
-import { CancelCartModal } from "./CancelCartModal";
-import { useNavigate, useParams } from "react-router-dom";
-import { useMakeTheme } from "../../../../common/MakeThemeProvider";
-
-export interface CartItemCountState extends CartItem {
- newCartcount: number;
-}
-
-export function CartPage() {
- const navigate = useNavigate();
- const { makerspaceID, cartID } = useParams<{ makerspaceID: string, cartID: string }>();
- if (!makerspaceID || !cartID) throw new Error("Makerspace ID and Cart ID are required");
- const makeTheme = useMakeTheme();
-
- const cartResult = useQuery(GET_CART, { variables: { id: cartID } });
-
- const [completeCartMutation] = useMutation(COMPLETE_CART);
- const [cancelCartMutation] = useMutation(CANCEL_CART);
-
- const staticRows: CartItem[] = cartResult.data?.cart?.items || [];
- const rows = staticRows.map(item => ({ ...item, newCartcount: item.cartcount }));
-
- const [refundModalItem, setRefundModalItem] = useState(null);
- const [refundSuccessSnackbarOpen, setRefundSuccessSnackbarOpen] = useState(false);
- const [refundErrorSnackbarOpen, setRefundErrorSnackbarOpen] = useState(false);
-
- const [confirmPickupModalOpen, setConfirmPickupModalOpen] = useState(false);
- const [pickupSuccessSnackbarOpen, setPickupSuccessSnackbarOpen] = useState(false);
- const [pickupErrorSnackbarOpen, setPickupErrorSnackbarOpen] = useState(false);
-
- const [cancelCartModalOpen, setCancelCartModalOpen] = useState(false);
- const [cancelSuccessSnackbarOpen, setCancelSuccessSnackbarOpen] = useState(false);
- const [cancelErrorSnackbarOpen, setCancelErrorSnackbarOpen] = useState(false);
-
- const columns: GridColDef<(typeof rows)[number]>[] = [
- {
- field: "image", headerName: "Image", width: 160,
- renderCell: (params) => (
),
- },
- { field: "name", headerName: "Name", width: 300 },
- {
- field: "quantity", headerName: "Quantity", width: 600,
- renderCell: (params) =>
- 0 ? "none" : "line-through" }}>
- {params.row.newCartcount == 1 ? params.row.unit : params.row.pluralUnit}
-
- ,
- },
-
- ];
-
- return (
-
-
-
-
-
- }>
- {`Carts | ${makeTheme.title}`}
-
-
- {
- setRefundModalItem(null)
- if (failure) {
- setRefundErrorSnackbarOpen(true);
- } else {
- setRefundSuccessSnackbarOpen(true);
- }
- }}
- cartId={parseInt(cartID)}
- statedItem={refundModalItem}
- />
-
- setRefundSuccessSnackbarOpen(false)}
- message="Refund process successful"
- autoHideDuration={5000}
- />
- setRefundErrorSnackbarOpen(false)}
- message="Refund process failed. Please contact an administrator."
- autoHideDuration={5000}
- />
-
-
- setConfirmPickupModalOpen(false)}
- onConfirm={() => {
- setConfirmPickupModalOpen(false);
- completeCartMutation({
- variables: {
- cartID: cartID,
- }
- }).then(() => {
- setPickupSuccessSnackbarOpen(true);
- }).catch(() => {
- setPickupErrorSnackbarOpen(true);
- });
- }}
- />
-
- {
- setPickupSuccessSnackbarOpen(false);
- navigate(`/makerspace/${makerspaceID}/storefront/carts`);
- }}
- message="Pickup process successful. Redirecting back to Cart List..."
- autoHideDuration={5000}
- />
- setPickupErrorSnackbarOpen(false)}
- message="Pickup process failed. Please contact an administrator."
- autoHideDuration={5000}
- />
-
-
- setCancelCartModalOpen(false)}
- onConfirm={() => {
- setCancelCartModalOpen(false);
- cancelCartMutation({
- variables: {
- cartID: cartID,
- }
- }).then(() => {
- setCancelSuccessSnackbarOpen(true);
- }).catch(() => {
- setCancelErrorSnackbarOpen(true);
- });
- }}
- />
-
- {
- setCancelSuccessSnackbarOpen(false);
- navigate(`/makerspace/${makerspaceID}/storefront/carts`);
- }}
- message="Cancel process successful. Redirecting back to Cart List..."
- autoHideDuration={5000}
- />
- setCancelErrorSnackbarOpen(false)}
- message="Cancel process failed. Please contact an administrator."
- autoHideDuration={5000}
- />
-
-
- )
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/internal/ConfirmPickupModal.tsx b/client/src/pages/lab_management/storefront/internal/ConfirmPickupModal.tsx
deleted file mode 100644
index e043eed46..000000000
--- a/client/src/pages/lab_management/storefront/internal/ConfirmPickupModal.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { Typography, Button } from "@mui/material";
-import { Box, Stack } from "@mui/system";
-import PrettyModal from "../../../../common/PrettyModal";
-
-interface PickupModalProps {
- open: boolean;
- onClose: () => void;
- onConfirm: () => void;
-}
-
-export function ConfirmPickupModal({ open, onClose, onConfirm }: PickupModalProps) {
- if (!open) return null;
-
- return (
-
- Confirm Item Pickup
-
- Confirm completion of pickup?
- This action cannot be undone. Only confirm once the user has picked up all the items listed in this cart.
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront/internal/RefundModal.tsx b/client/src/pages/lab_management/storefront/internal/RefundModal.tsx
deleted file mode 100644
index cbe757b15..000000000
--- a/client/src/pages/lab_management/storefront/internal/RefundModal.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Box, Button, Checkbox, FormControlLabel, Typography } from "@mui/material";
-import PrettyModal from "../../../../common/PrettyModal";
-import { CartItemCountState } from "./CartPage";
-import { useState } from "react";
-import { useMutation } from "@apollo/client/react";
-import { GET_CART, SUBTRACT_ITEM_FROM_CART } from "../../../../queries/cartQueries";
-
-interface PrettyModalProps {
- open: boolean;
- onClose: (failure?: boolean) => void;
- statedItem: CartItemCountState | null;
- cartId: number;
-}
-
-export function RefundModal({ open, onClose, statedItem, cartId }: PrettyModalProps) {
- const [restock, setRestock] = useState(false);
-
- const [subtractItemFromCart, subtractItemFromCartResult] = useMutation(SUBTRACT_ITEM_FROM_CART, { refetchQueries: [{ query: GET_CART, variables: { id: cartId } }] });
-
- if (!statedItem) {
- return null; // If no item is selected, do not render the modal
- }
-
- return (
-
- Update Item Cart Count ({statedItem.name})
-
- Current Count: {statedItem.cartcount}
- New Count: {statedItem.newCartcount}
- The user will be refunded ${(statedItem.cartcount - statedItem.newCartcount) * statedItem.pricePerUnit}.
-
-
- setRestock(e.target.checked)} />} label={`Restock ${statedItem.cartcount - statedItem.newCartcount} ${statedItem.pluralUnit} to Inventory?`} />
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/client/src/pages/lab_management/storefront_preview/CreatingTransactionView.tsx b/client/src/pages/lab_management/storefront_preview/CreatingTransactionView.tsx
deleted file mode 100644
index 07a4e1f32..000000000
--- a/client/src/pages/lab_management/storefront_preview/CreatingTransactionView.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React from "react";
-import LogoSvg from "../../../assets/shed logo orange white.png";
-import { Divider, Stack, Typography } from "@mui/material";
-import NameTag from "./NameTag";
-import styled from "styled-components";
-import ShoppingCartPreviewRow from "./ShoppingCartPreviewRow";
-import { ShoppingCartEntry } from "../storefront/StorefrontPage";
-
-const StyledLogo = styled.img`
- width: 530px;
-`;
-
-const AdamSavage = {
- name: "Adam Savage",
- avatarHref: "https://speaking.com/wp-content/uploads/2017/06/Adam-Savage.jpg",
- id: "test-id-1",
-};
-
-interface CreatingTransactionViewProps {
- cart: ShoppingCartEntry[];
-}
-
-export default function CreatingTransactionView({
- cart,
-}: CreatingTransactionViewProps) {
- const total = cart
- .reduce((acc, { count, item }) => acc + count * item.pricePerUnit, 0)
- .toFixed(2);
-
- return (
-
-
-
-
-
-
-
-
- Shopping cart
-
-
- } spacing={4} mt={4}>
- {cart.map((entry) => (
-
- ))}
-
-
-
- ${total}
-
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront_preview/NameTag.tsx b/client/src/pages/lab_management/storefront_preview/NameTag.tsx
deleted file mode 100644
index 9d3a152f6..000000000
--- a/client/src/pages/lab_management/storefront_preview/NameTag.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import React, { useState } from "react";
-import Person from "../../../types/Person";
-import { Avatar, Paper, Stack, Typography } from "@mui/material";
-
-interface NameTagProps {
- person: Person;
- scale?: number;
-}
-
-export default function NameTag({ person, scale = 1 }: NameTagProps) {
- const [angle] = useState(Math.random() * 10 - 5);
-
- return (
-
-
-
- HELLO
-
-
-
- my name is
-
-
-
-
-
- {person.name.split(" ")[0]}
-
-
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront_preview/NoTransactionView.tsx b/client/src/pages/lab_management/storefront_preview/NoTransactionView.tsx
deleted file mode 100644
index 9ed38275e..000000000
--- a/client/src/pages/lab_management/storefront_preview/NoTransactionView.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from "react";
-import { Stack, Typography } from "@mui/material";
-import LogoSvg from "../../../assets/shed logo orange white.png";
-import styled from "styled-components";
-import NameTag from "./NameTag";
-
-const StyledLogo = styled.img`
- width: 530px;
-`;
-
-const AdamSavage = {
- name: "Adam Savage",
- avatarHref: "https://speaking.com/wp-content/uploads/2017/06/Adam-Savage.jpg",
- id: "test-id-1",
-};
-
-export default function NoTransactionView() {
- return (
-
-
-
- Retail Center
-
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront_preview/ShoppingCartPreviewRow.tsx b/client/src/pages/lab_management/storefront_preview/ShoppingCartPreviewRow.tsx
deleted file mode 100644
index e54d6d4e5..000000000
--- a/client/src/pages/lab_management/storefront_preview/ShoppingCartPreviewRow.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import React from "react";
-import { ShoppingCartEntry } from "../storefront/StorefrontPage";
-import { Avatar, Stack, Typography } from "@mui/material";
-
-interface ShoppingCartRowProps {
- entry: ShoppingCartEntry;
-}
-
-export default function ShoppingCartPreviewRow({
- entry,
-}: ShoppingCartRowProps) {
- const { item, count } = entry;
-
- return (
-
-
-
-
-
- {item.name}
-
-
-
-
-
- {count}
-
-
-
- {count === 1 ? item.unit : item.pluralUnit}
-
-
-
-
- ${(count * item.pricePerUnit).toFixed(2)}
-
-
- );
-}
diff --git a/client/src/pages/lab_management/storefront_preview/StorefrontPreviewPage.tsx b/client/src/pages/lab_management/storefront_preview/StorefrontPreviewPage.tsx
deleted file mode 100644
index a2daa826f..000000000
--- a/client/src/pages/lab_management/storefront_preview/StorefrontPreviewPage.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React, { useCallback, useEffect, useState } from "react";
-import { Box } from "@mui/material";
-import NoTransactionView from "./NoTransactionView";
-import { ShoppingCartEntry } from "../storefront/StorefrontPage";
-import CreatingTransactionView from "./CreatingTransactionView";
-
-export default function StorefrontPreviewPage() {
- const [cart, setCart] = useState([]);
-
- const getCartFromStorage = useCallback(() => {
- const storedCart = localStorage.getItem("cart");
- const parsedCart = storedCart && JSON.parse(storedCart);
- setCart(parsedCart || []);
- }, []);
-
- useEffect(() => {
- // Load the cart on page load
- getCartFromStorage();
-
- // Load the cart whenever localstorage changes
- window.addEventListener("storage", getCartFromStorage);
- }, [getCartFromStorage]);
-
- return (
-
- {cart.length ? (
-
- ) : (
-
- )}
-
- );
-}
diff --git a/client/src/pages/lab_management/users/userpage/Info.tsx b/client/src/pages/lab_management/users/userpage/Info.tsx
index 69302b562..c6af92c81 100644
--- a/client/src/pages/lab_management/users/userpage/Info.tsx
+++ b/client/src/pages/lab_management/users/userpage/Info.tsx
@@ -1,8 +1,7 @@
-import { Alert, Avatar, Button, IconButton, Stack, Typography } from "@mui/material";
+import { Alert, Avatar, Button, Stack, Typography } from "@mui/material";
import { useIsMobile } from "../../../../common/IsMobileProvider";
import { stringAvatar } from "../../../../common/avatarGenerator";
import { useNavigate, useParams } from "react-router-dom";
-import ArrowBackIcon from '@mui/icons-material/ArrowBack';
import HistoryIcon from "@mui/icons-material/History";
import InfoBlob from "../InfoBlob";
import { format, parseISO } from "date-fns";
diff --git a/client/src/pages/newreaderpage/NewReaderPage.tsx b/client/src/pages/newreaderpage/NewReaderPage.tsx
deleted file mode 100644
index 9ae95c688..000000000
--- a/client/src/pages/newreaderpage/NewReaderPage.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import { useMutation } from "@apollo/client/react";
-import { Button, Checkbox, Stack, TextField } from "@mui/material";
-import { PAIR_READER } from "../../queries/readersQueries";
-import { useState } from "react";
-
-export default function NewReaderPage() {
- const [pairReader] = useMutation(PAIR_READER);
-
- // Server Config
- const [HumanName, setHumanName] = useState("Enter settings and hit Pair to receive a human readable name");
- const [Cert, setCert] = useState("Enter settings and hit Pair to see cert");
- const [ServerJSON, setServerJSON] = useState("Enter settings and hit Pair to see server JSON");
- const [NetworkJSON, setNetworkJSON] = useState("Enter settings and hit submit to see network JSON");
-
- // Network Config
- const [SSID, setSSID] = useState("");
- const [Password, setPassword] = useState("");
- const [UseWifi, setUseWifi] = useState(true);
-
- // Hardware/Last Config
- const [LastSSID, setLastSSID] = useState("LastSSID");
- const [HaveEthernet, setHaveEthernet] = useState(false);
- const [WasAllowedWifi, setWasAllowedHaveWifi] = useState(true);
- const [SerialNumber, setSerialNumber] = useState("ABCD");
-
-
-
- function applyHW(){
- setSSID(LastSSID);
- }
-
- function applyNetworkToJson(){
- const obj: any = {};
- if (UseWifi){
- obj["SSID"] = SSID;
- obj["Password"] = Password;
- }
- obj["AllowedWifi"] = UseWifi;
- return (JSON.stringify(obj));
- }
-
- function handlePair(resp: {data?: {pairReader: {readerKey: string, name: string, certs: string, siteName: string}}}){
- if (resp?.data?.pairReader == null){
- setServerJSON("Failed to pair (no json)");
- setCert("Failed to pair (no certs)");
- return;
- }
- const obj: any = {};
- obj["Server"] = resp.data.pairReader.siteName;
- obj["Key"] = resp.data.pairReader.readerKey;
-
- obj["SSID"] = SSID;
- obj["Password"] = Password;
-
- setServerJSON(JSON.stringify(obj));
- setCert(resp.data.pairReader.certs);
- setHumanName(resp.data.pairReader.name);
-
- }
-
- return
- This will be automatic soon
-
- 0. Hardware Identification
- This will happen automatically on connect to shlug
-
- Serial Number
- setSerialNumber(e.target.value)} value={SerialNumber}>
-
-
- HaveEthernet
- setHaveEthernet(e.target.checked)} checked={HaveEthernet}/>
-
-
- AllowedWifi
- setWasAllowedHaveWifi(e.target.checked)} checked={WasAllowedWifi}/>
-
-
- Last SSID
- setLastSSID(e.target.value)} value={LastSSID}>
-
-
-
-
- 1.Network
-
-
- Use Wifi
- setUseWifi(e.target.checked)} checked={UseWifi} />
-
-
- { UseWifi ?
-
-
- WiFi SSID
- setSSID(e.target.value)} value={SSID}>
-
-
- WiFi Password
- setPassword(e.target.value)} value={Password}>
-
-
- : null
- }
-
-
-
- Network JSON {NetworkJSON}
-
-
-
- 2. Server
-
- Name
- {HumanName}
- Server JSON
- {ServerJSON}
- Cert
- {Cert}
-
-
-}
diff --git a/client/src/queries/cartQueries.ts b/client/src/queries/cartQueries.ts
deleted file mode 100644
index d5b57ad49..000000000
--- a/client/src/queries/cartQueries.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import { gql } from "@apollo/client";
-
-export const GET_CARTS = gql`
- query GetCarts($makerspaceID: ID) {
- carts(makerspaceID: $makerspaceID) {
- id
- user {
- id
- firstName
- lastName
- ritUsername
- }
- makerspace {
- id
- name
- }
- lastModified
- }
- }
-`;
-
-export const GET_CART = gql`
- query GetCart($id: ID!) {
- cart(id: $id) {
- id
- user {
- id
- firstName
- lastName
- ritUsername
- }
- makerspace {
- id
- name
- }
- items {
- id
- image
- name
- unit
- pluralUnit
- count
- pricePerUnit
- notes
- cartcount
- }
- lastModified
- }
- }
-`;
-
-export const SUBTRACT_ITEM_FROM_CART = gql`
- mutation SubtractItemFromCart($cartID: ID!, $itemID: ID!, $quantity: Int!, $restock: Boolean!) {
- subtractItemFromCart(cartID: $cartID, itemID: $itemID, quantity: $quantity, restock: $restock)
- }
-`;
-
-export const CANCEL_CART = gql`
- mutation CancelCart($cartID: ID!) {
- cancelCart(cartID: $cartID)
- }
-`;
-
-export const COMPLETE_CART = gql`
- mutation CompleteCart($cartID: ID!) {
- completeCart(cartID: $cartID)
- }
-`;
diff --git a/client/src/queries/readersQueries.ts b/client/src/queries/readersQueries.ts
deleted file mode 100644
index dc1521032..000000000
--- a/client/src/queries/readersQueries.ts
+++ /dev/null
@@ -1,331 +0,0 @@
-import { gql } from "@apollo/client";
-
-export interface Reader {
- id: number,
- name: string,
- temp: number,
- state: string,
- user: {id: number, firstName: string, lastName: string}
- recentSessionLength: number,
- lastStatusReason: string,
- scheduledStatusFreq: number,
- lastStatusTime: string,
- BEVer: string,
- FEVer: string,
- HWVer: string,
- SN: string,
- sessionStartTime: number,
- targetFirmwareVersion?: string,
-}
-
-export const GET_READERS = gql`
- query GetReaders($makerspaceID: ID) {
- readers(makerspaceID: $makerspaceID) {
- id
- name
- temp
- state
- user {
- id
- firstName
- lastName
- }
- recentSessionLength
- lastStatusReason
- scheduledStatusFreq
- lastStatusTime
- BEVer
- FEVer
- HWVer
- sessionStartTime
- SN
- readerKeyCycle
- pairTime
- targetFirmwareVersion
- }
- }
-`;
-
-
-export const GET_READERS_WITH_PAIRINGS = gql`
- query GetReaders($makerspaceID: ID) {
- readers(makerspaceID: $makerspaceID) {
- id
- name
- temp
- state
- user {
- id
- firstName
- lastName
- }
- recentSessionLength
- lastStatusReason
- scheduledStatusFreq
- lastStatusTime
- BEVer
- FEVer
- HWVer
- sessionStartTime
- SN
- readerKeyCycle
- pairTime
- targetFirmwareVersion
- pairedMakerspace {
- id
- name
- }
- pairedEquipment {
- equipmentID
- equipmentName
- instanceID
- instanceName
- }
- }
- }
-`;
-
-export const GET_READER_BY_ID = gql`
- query GetReaderByID($id: ID!) {
- reader(id: $id) {
- id
- name
- temp
- state
- user {
- id
- firstName
- lastName
- }
- recentSessionLength
- lastStatusReason
- scheduledStatusFreq
- lastStatusTime
- BEVer
- FEVer
- HWVer
- sessionStartTime
- SN
- readerKeyCycle
- pairTime
- targetFirmwareVersion
- }
- }
-`;
-
-
-export const GET_READER_LOGS = gql`
-query GetReaderLogs($makerspaceID: ID, $from: DateTime, $to: DateTime, $offset: Int, $limit: Int){
- readerLogs(makerspaceID: $makerspaceID, from: $from, to: $to, pageOffset: $offset, pageLimit: $limit) {
- id
- dateTime
- reader {
- id
- name
- }
- instance {
- id
- name
- equipment {
- id
- name
- room {
- makerspace {
- id
- name
- }
- }
- }
- }
- log
- }
-}`;
-
-
-export const GET_UNPAIRED_READERS = gql`
- query GetUnpairedReaders {
- unpairedReaders {
- id
- name
- temp
- state
- user {
- id
- firstName
- lastName
- }
- recentSessionLength
- lastStatusReason
- scheduledStatusFreq
- lastStatusTime
- BEVer
- FEVer
- HWVer
- sessionStartTime
- SN
- readerKeyCycle
- pairTime
- targetFirmwareVersion
- }
- }
-`
-
-export const GET_MAKERSPACE_FOR_WELCOME_READER = gql`
-query Query($readerId: ID) {
- makerspaceForWelcomeReader(readerId: $readerId){
- id
- name
- imageUrl
- rooms {
- id
- name
- equipment {
- id
- name
- imageUrl
- sopUrl
- trainingModules {
- id
- name
- }
- numAvailable
- numInUse
- byReservationOnly
- notes
- archived
- }
- trainingModules {
- id
- name
- }
- }
- trainingModules {
- id
- name
- }
- }
-}
-`;
-
-export const GET_WELCOME_READERS_FOR_MAKERSPACE = gql`
-query GetWelcomeReadersForMakerspace($makerspaceId: ID!) {
- welcomeReadersForMakerspace(makerspaceId: $makerspaceId){
- id
- name
- temp
- state
- user {
- id
- firstName
- lastName
- }
- recentSessionLength
- lastStatusReason
- scheduledStatusFreq
- lastStatusTime
- BEVer
- FEVer
- HWVer
- sessionStartTime
- SN
- readerKeyCycle
- pairTime
- targetFirmwareVersion
- }
-}
-`;
-
-export const CREATE_READER = gql`
- mutation CreateReader(
- $id: ID!,
- $name: string,
- ) {
- createReader(
- id: $id,
- name: $name,
- ) {
- id
- name
- }
- }
-`;
-
-export const DELETE_READER = gql`
- mutation DeleteReader($id: ID!){
- deleteReader(id: $id)
- }
-`
-export const PAIR_AS_WELCOME_READER = gql`
-mutation PairAsWelcomeReader($readerId: ID!, $makerspaceId: ID!) {
- pairAsWelcomeReader(readerID: $readerId, makerspaceID: $makerspaceId)
-}
-`;
-
-export const UNPAIR_AS_WELCOME_READER = gql`
-mutation UnpairAsWelcomeReader($readerId: ID!, $makerspaceId: ID!) {
- unpairAsWelcomeReader(readerID: $readerId, makerspaceID: $makerspaceId)
-}
-`;
-
-export const PAIR_READER = gql`
- mutation PairReader(
- $SN: String!,
- ) {
- pairReader(
- SN: $SN,
- ) {
- readerKey
- name
- siteName
- certs
- }
- }
-`;
-
-
-
-export const SET_READER_NAME = gql`
- mutation SetReaderName($id: ID!, $name: string) {
- setName(id: $id, name: $name) {
- id
- name
- temp
- state
- currentUID
- recentSessionLength
- lastStatusReason
- scheduledStatusFreq
- lastStatusTime
- }
- }
-`;
-
-export const IDENTIFY_READER = gql`
- mutation IdentifyReader($id:ID!, $doIdentify: Boolean!){
- identifyReader(id:$id, doIdentify:$doIdentify)
- }
-`;
-
-export const SET_READER_STATE = gql`
- mutation SetReaderState($id: ID!, $state: String) {
- setState(id: $id, state: $state)
- }
-`;
-
-export const RESTART_ALL_READERS = gql`
- mutation RestartAllReaders($makerspaceID: ID!) {
- restartAllReaders(makerspaceID: $makerspaceID)
- }
-`;
-
-export const GET_AVAILABLE_FIRMWARE_VERSIONS = gql`
- query Query {
- availableFirmwareVersions
- }
-`;
-
-export const REQUEST_OTA_UPDATE = gql`
- mutation SetOTAVersion($ids: [ID!]!, $otaTag: String!, $updateNow: Boolean!) {
- setOTAVersion(ids: $ids, otaTag: $otaTag, updateNow: $updateNow)
- }
-`;
\ No newline at end of file
diff --git a/client/src/reportWebVitals.ts b/client/src/reportWebVitals.ts
deleted file mode 100644
index 5fa3583b7..000000000
--- a/client/src/reportWebVitals.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { ReportHandler } from "web-vitals";
-
-const reportWebVitals = (onPerfEntry?: ReportHandler) => {
- if (onPerfEntry && onPerfEntry instanceof Function) {
- import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
- getCLS(onPerfEntry);
- getFID(onPerfEntry);
- getFCP(onPerfEntry);
- getLCP(onPerfEntry);
- getTTFB(onPerfEntry);
- });
- }
-};
-
-export default reportWebVitals;
diff --git a/client/src/types/InventoryCart.ts b/client/src/types/InventoryCart.ts
deleted file mode 100644
index 9ba13af3e..000000000
--- a/client/src/types/InventoryCart.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import InventoryItem from "./InventoryItem";
-
-export interface InventoryCart {
- id: number;
- user: {
- id: number;
- firstName: string;
- lastName: string;
- ritUsername: string;
- };
- makerspace: {
- id: number;
- name: string;
- };
- items?: InventoryItem[];
- lastModified: string;
-}
-
-export interface CartItem {
- id: number;
- image: string;
- name: string;
- unit: string;
- pluralUnit: string;
- count: number;
- pricePerUnit: number;
- notes: string;
- cartcount: number;
-}
diff --git a/client/src/types/Person.ts b/client/src/types/Person.ts
deleted file mode 100644
index 721409ead..000000000
--- a/client/src/types/Person.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// TODO: delete Person, replace usages with User
-export default interface Person {
- id: string;
- name: string;
- avatarHref: string;
-}
diff --git a/package-lock.json b/package-lock.json
index f6812d10d..90482a5e4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -38,7 +38,6 @@
"https": "^1.0.0",
"knex": "^3.1.0",
"mailgun.js": "^12.0.3",
- "moment": "^2.30.1",
"morgan": "^1.10.0",
"mqtt": "^5.15.1",
"node-schedule": "^2.1.1",
@@ -127,8 +126,7 @@
"use-immer": "^0.11.0",
"uuid": "^8.3.2",
"vite": "^7.1.11",
- "vite-plugin-eslint2": "^5.0.4",
- "web-vitals": "^2.1.4"
+ "vite-plugin-eslint2": "^5.0.4"
},
"devDependencies": {
"@eslint/js": "^9.33.0",
@@ -8233,7 +8231,9 @@
}
},
"node_modules/fast-xml-builder": {
- "version": "1.1.5",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz",
+ "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==",
"funding": [
{
"type": "github",
@@ -8242,7 +8242,8 @@
],
"license": "MIT",
"dependencies": {
- "path-expression-matcher": "^1.1.3"
+ "path-expression-matcher": "^1.5.0",
+ "xml-naming": "^0.1.0"
}
},
"node_modules/fast-xml-parser": {
@@ -15886,10 +15887,6 @@
"loose-envify": "^1.0.0"
}
},
- "node_modules/web-vitals": {
- "version": "2.1.4",
- "license": "Apache-2.0"
- },
"node_modules/whatwg-mimetype": {
"version": "4.0.0",
"license": "MIT",
@@ -16144,6 +16141,21 @@
"node": ">=0.6.0"
}
},
+ "node_modules/xml-naming": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz",
+ "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/xml2js": {
"version": "0.6.2",
"license": "MIT",
diff --git a/package.json b/package.json
index 78f633d43..73b835513 100644
--- a/package.json
+++ b/package.json
@@ -16,10 +16,10 @@
"start:staging": "cross-env NODE_ENV=staging npm run build:dev",
"start:debug": "cross-env NODE_ENV=development npm run build:server && nodemon --exec tsx --inspect=0.0.0.0:9229 server/dist/server.js",
"build:dev": "nodemon server/src/server.ts --exec tsx server/src/server.ts -e ts,graphql",
- "knex:migrate:make": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --migrations-directory server/src/db/migrations migrate:make -x ts",
- "knex:migrate:latest": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --knexfile server/src/db/knexFile.ts migrate:latest",
- "knex:migrate:rollback": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --knexfile server/src/db/knexFile.ts migrate:rollback",
- "knex:migrate:unlock": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --knexfile server/src/db/knexFile.ts migrate:unlock",
+ "knex:migrate:make": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --migrations-directory server/src/database/knex/migrations migrate:make -x ts",
+ "knex:migrate:latest": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --knexfile server/src/database/knex/knexFile.ts migrate:latest",
+ "knex:migrate:rollback": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --knexfile server/src/database/knex/knexFile.ts migrate:rollback",
+ "knex:migrate:unlock": "cross-env NODE_OPTIONS=\"--import tsx\" npx knex --knexfile server/src/database/knex/knexFile.ts migrate:unlock",
"lint": "cd server/ && eslint -c eslint.config.js src/**/*.ts",
"lint-fix": "cd server/ && eslint -c eslint.config.js --fix src/**/*.ts"
},
@@ -53,7 +53,6 @@
"https": "^1.0.0",
"knex": "^3.1.0",
"mailgun.js": "^12.0.3",
- "moment": "^2.30.1",
"morgan": "^1.10.0",
"mqtt": "^5.15.1",
"node-schedule": "^2.1.1",
@@ -105,4 +104,4 @@
"engines": {
"node": ">=20.x"
}
-}
\ No newline at end of file
+}
diff --git a/server/src/api/devices/cards/cardApi.ts b/server/src/api/devices/cards/cardApi.ts
index 2fa81c75e..3b004e1ff 100644
--- a/server/src/api/devices/cards/cardApi.ts
+++ b/server/src/api/devices/cards/cardApi.ts
@@ -1,9 +1,9 @@
import expressWs from 'express-ws';
import * as Atrium from "../../../integrations/atrium-integration/atrium.js";
import { CurrencySource } from "../../../integrations/currency/types.js";
-import * as UserRepo from "../../../repositories/Users/UserRepository.js";
-import * as TempCardRepo from "../../../repositories/Users/TempCardRepository.js";
-import { ReaderRow } from "../../../db/tables.js";
+import * as UserRepo from "../../../database/repositories/Users/UserRepository.js";
+import * as TempCardRepo from "../../../database/repositories/Users/TempCardRepository.js";
+import { ReaderRow } from "../../../database/knex/tables.js";
enum DispenserStatus {
CARD_CHANGE = "CARD_CHANGE",
diff --git a/server/src/api/devices/core/access/access.ts b/server/src/api/devices/core/access/access.ts
index 176e6a168..b356693e4 100644
--- a/server/src/api/devices/core/access/access.ts
+++ b/server/src/api/devices/core/access/access.ts
@@ -1,5 +1,5 @@
import expressWs from 'express-ws';
-import WSACSController from '../../../../models/api/WSACS/WSACSController.js';
+import WSACSController from '../../../../database/models/api/WSACS/WSACSController.js';
export function registerEndpoints(app: expressWs.Application) {
app.ws("/api/devices/cores/access/ws", WSACSController.initConnection);
diff --git a/server/src/api/devices/core/coreApi.ts b/server/src/api/devices/core/coreApi.ts
index 8c2e23958..097c8e5ee 100644
--- a/server/src/api/devices/core/coreApi.ts
+++ b/server/src/api/devices/core/coreApi.ts
@@ -1,6 +1,6 @@
import expressWs from 'express-ws';
-import { Device } from "../../../models/devices/device.js";
-import * as CoreRepo from "../../../repositories/Devices/CoreRepository.js"
+import { Device } from "../../../database/models/devices/device.js";
+import * as CoreRepo from "../../../database/repositories/Devices/CoreRepository.js"
import * as AccessAPI from "./access/access.js";
diff --git a/server/src/api/devices/deviceApi.ts b/server/src/api/devices/deviceApi.ts
index b592019eb..640beb32c 100644
--- a/server/src/api/devices/deviceApi.ts
+++ b/server/src/api/devices/deviceApi.ts
@@ -1,9 +1,9 @@
import expressWs from 'express-ws';
-import * as DeviceRepo from "../../repositories/Devices/DeviceRepository.js"
+import * as DeviceRepo from "../../database/repositories/Devices/DeviceRepository.js"
import * as CardAPI from "./cards/cardApi.js";
import * as CoreAPI from "./core/coreApi.js";
import * as FileAPI from "./files/fileApi.js";
-import { Device } from "../../models/devices/device.js";
+import { Device } from "../../database/models/devices/device.js";
export async function authenticateDevice(device: Device, submittedKey: string): Promise {
if (device.pairTime === undefined || device.SN === undefined || device.keyCycle === undefined) { return false; }
diff --git a/server/src/auth.ts b/server/src/auth.ts
index 651235d13..8b84f3bb2 100644
--- a/server/src/auth.ts
+++ b/server/src/auth.ts
@@ -23,14 +23,14 @@ import {
getUserTrainerPerms,
updateAtriumToken,
updateUserName
-} from "./repositories/Users/UserRepository.js";
-import { getHoldsByUser } from "./repositories/Holds/HoldsRepository.js";
+} from "./database/repositories/Users/UserRepository.js";
+import { getHoldsByUser } from "./database/repositories/Holds/HoldsRepository.js";
import { CurrentUser } from "./context.js";
-import { createUnassocaitedAuditLog } from "./repositories/AuditLogs/AuditLogRepository.js";
+import { createUnassocaitedAuditLog } from "./database/repositories/AuditLogs/AuditLogRepository.js";
import path from "path";
-import { insertTempRole } from './repositories/tempRolesRepo.js';
+import { insertTempRole } from './database/repositories/tempRolesRepo.js';
import { generateAtriumToken } from './integrations/atrium-integration/atrium.js';
-import * as SessionRepo from "./repositories/Users/SessionRepository.js";
+import * as SessionRepo from "./database/repositories/Users/SessionRepository.js";
const __dirname = import.meta.dirname;
diff --git a/server/src/context.ts b/server/src/context.ts
index d81fb38ba..df8131850 100644
--- a/server/src/context.ts
+++ b/server/src/context.ts
@@ -1,6 +1,6 @@
-import { UserRow } from "./db/tables.js";
+import { UserRow } from "./database/knex/tables.js";
import { GraphQLError } from "graphql/error/GraphQLError.js";
-import { knex } from "./db/index.js";
+import { knex } from "./database/knex/index.js";
// console.log("Migrating");
// const ret = await knex.migrate.latest()
diff --git a/server/src/data/devUsers.json b/server/src/database/data/devUsers.json
similarity index 100%
rename from server/src/data/devUsers.json
rename to server/src/database/data/devUsers.json
diff --git a/server/src/data/humanReadableNames.ts b/server/src/database/data/humanReadableNames.ts
similarity index 100%
rename from server/src/data/humanReadableNames.ts
rename to server/src/database/data/humanReadableNames.ts
diff --git a/server/src/db/index.ts b/server/src/database/knex/index.ts
similarity index 100%
rename from server/src/db/index.ts
rename to server/src/database/knex/index.ts
diff --git a/server/src/db/knexFile.ts b/server/src/database/knex/knexFile.ts
similarity index 96%
rename from server/src/db/knexFile.ts
rename to server/src/database/knex/knexFile.ts
index 9ccff9fbe..982ddb802 100644
--- a/server/src/db/knexFile.ts
+++ b/server/src/database/knex/knexFile.ts
@@ -11,7 +11,7 @@ import { createRequire } from "module";
const require = createRequire(import.meta.url); //Remove this line if running using --esm
const __dirname = import.meta.dirname;
-require("dotenv").config({ path: __dirname + "/./../../.env" });
+require("dotenv").config({ path: __dirname + "/./../../../.env" });
// Update with your config settings.
const config: any = { //remove ': any' if using --esm
diff --git a/server/src/db/migrations/20210923214317_initial_users.ts b/server/src/database/knex/migrations/20210923214317_initial_users.ts
similarity index 100%
rename from server/src/db/migrations/20210923214317_initial_users.ts
rename to server/src/database/knex/migrations/20210923214317_initial_users.ts
diff --git a/server/src/db/migrations/20211010154323_build-training-tables.ts b/server/src/database/knex/migrations/20211010154323_build-training-tables.ts
similarity index 100%
rename from server/src/db/migrations/20211010154323_build-training-tables.ts
rename to server/src/database/knex/migrations/20211010154323_build-training-tables.ts
diff --git a/server/src/db/migrations/20211102194503_machines_table.ts b/server/src/database/knex/migrations/20211102194503_machines_table.ts
similarity index 100%
rename from server/src/db/migrations/20211102194503_machines_table.ts
rename to server/src/database/knex/migrations/20211102194503_machines_table.ts
diff --git a/server/src/db/migrations/20220119232016_store-front.ts b/server/src/database/knex/migrations/20220119232016_store-front.ts
similarity index 100%
rename from server/src/db/migrations/20220119232016_store-front.ts
rename to server/src/database/knex/migrations/20220119232016_store-front.ts
diff --git a/server/src/db/migrations/20220126063347_holds_table.ts b/server/src/database/knex/migrations/20220126063347_holds_table.ts
similarity index 100%
rename from server/src/db/migrations/20220126063347_holds_table.ts
rename to server/src/database/knex/migrations/20220126063347_holds_table.ts
diff --git a/server/src/db/migrations/20220215195334_audit_logs.ts b/server/src/database/knex/migrations/20220215195334_audit_logs.ts
similarity index 100%
rename from server/src/db/migrations/20220215195334_audit_logs.ts
rename to server/src/database/knex/migrations/20220215195334_audit_logs.ts
diff --git a/server/src/db/migrations/20220222200523_rooms_table.ts b/server/src/database/knex/migrations/20220222200523_rooms_table.ts
similarity index 100%
rename from server/src/db/migrations/20220222200523_rooms_table.ts
rename to server/src/database/knex/migrations/20220222200523_rooms_table.ts
diff --git a/server/src/db/migrations/20220223203639_inventory-threshold.ts b/server/src/database/knex/migrations/20220223203639_inventory-threshold.ts
similarity index 100%
rename from server/src/db/migrations/20220223203639_inventory-threshold.ts
rename to server/src/database/knex/migrations/20220223203639_inventory-threshold.ts
diff --git a/server/src/db/migrations/20220223212706_remove-purchase-orders.ts b/server/src/database/knex/migrations/20220223212706_remove-purchase-orders.ts
similarity index 100%
rename from server/src/db/migrations/20220223212706_remove-purchase-orders.ts
rename to server/src/database/knex/migrations/20220223212706_remove-purchase-orders.ts
diff --git a/server/src/db/migrations/20220305183523_room-fk-users.ts b/server/src/database/knex/migrations/20220305183523_room-fk-users.ts
similarity index 100%
rename from server/src/db/migrations/20220305183523_room-fk-users.ts
rename to server/src/database/knex/migrations/20220305183523_room-fk-users.ts
diff --git a/server/src/db/migrations/20220305184048_room-fk-equipment.ts b/server/src/database/knex/migrations/20220305184048_room-fk-equipment.ts
similarity index 100%
rename from server/src/db/migrations/20220305184048_room-fk-equipment.ts
rename to server/src/database/knex/migrations/20220305184048_room-fk-equipment.ts
diff --git a/server/src/db/migrations/20220310180432_university-id.ts b/server/src/database/knex/migrations/20220310180432_university-id.ts
similarity index 100%
rename from server/src/db/migrations/20220310180432_university-id.ts
rename to server/src/database/knex/migrations/20220310180432_university-id.ts
diff --git a/server/src/db/migrations/20220316203223_first-time-users.ts b/server/src/database/knex/migrations/20220316203223_first-time-users.ts
similarity index 100%
rename from server/src/db/migrations/20220316203223_first-time-users.ts
rename to server/src/database/knex/migrations/20220316203223_first-time-users.ts
diff --git a/server/src/db/migrations/20220317233259_audit-logs-enhancements.ts b/server/src/database/knex/migrations/20220317233259_audit-logs-enhancements.ts
similarity index 100%
rename from server/src/db/migrations/20220317233259_audit-logs-enhancements.ts
rename to server/src/database/knex/migrations/20220317233259_audit-logs-enhancements.ts
diff --git a/server/src/db/migrations/20220320213244_room-swipes.ts b/server/src/database/knex/migrations/20220320213244_room-swipes.ts
similarity index 100%
rename from server/src/db/migrations/20220320213244_room-swipes.ts
rename to server/src/database/knex/migrations/20220320213244_room-swipes.ts
diff --git a/server/src/db/migrations/20220322142744_users-archive.ts b/server/src/database/knex/migrations/20220322142744_users-archive.ts
similarity index 100%
rename from server/src/db/migrations/20220322142744_users-archive.ts
rename to server/src/database/knex/migrations/20220322142744_users-archive.ts
diff --git a/server/src/db/migrations/20220322194711_equipment-archive.ts b/server/src/database/knex/migrations/20220322194711_equipment-archive.ts
similarity index 100%
rename from server/src/db/migrations/20220322194711_equipment-archive.ts
rename to server/src/database/knex/migrations/20220322194711_equipment-archive.ts
diff --git a/server/src/db/migrations/20220324210801_module_submissions_table.ts b/server/src/database/knex/migrations/20220324210801_module_submissions_table.ts
similarity index 100%
rename from server/src/db/migrations/20220324210801_module_submissions_table.ts
rename to server/src/database/knex/migrations/20220324210801_module_submissions_table.ts
diff --git a/server/src/db/migrations/20220325155145_remove-monitoring.ts b/server/src/database/knex/migrations/20220325155145_remove-monitoring.ts
similarity index 100%
rename from server/src/db/migrations/20220325155145_remove-monitoring.ts
rename to server/src/database/knex/migrations/20220325155145_remove-monitoring.ts
diff --git a/server/src/db/migrations/20220327205516_training-modules-archive.ts b/server/src/database/knex/migrations/20220327205516_training-modules-archive.ts
similarity index 100%
rename from server/src/db/migrations/20220327205516_training-modules-archive.ts
rename to server/src/database/knex/migrations/20220327205516_training-modules-archive.ts
diff --git a/server/src/db/migrations/20220329201220_rooms-archive.ts b/server/src/database/knex/migrations/20220329201220_rooms-archive.ts
similarity index 100%
rename from server/src/db/migrations/20220329201220_rooms-archive.ts
rename to server/src/database/knex/migrations/20220329201220_rooms-archive.ts
diff --git a/server/src/db/migrations/20220329201247_store-front-archive.ts b/server/src/database/knex/migrations/20220329201247_store-front-archive.ts
similarity index 100%
rename from server/src/db/migrations/20220329201247_store-front-archive.ts
rename to server/src/database/knex/migrations/20220329201247_store-front-archive.ts
diff --git a/server/src/db/migrations/20220410211419_module_submissions_exp_table.ts b/server/src/database/knex/migrations/20220410211419_module_submissions_exp_table.ts
similarity index 100%
rename from server/src/db/migrations/20220410211419_module_submissions_exp_table.ts
rename to server/src/database/knex/migrations/20220410211419_module_submissions_exp_table.ts
diff --git a/server/src/db/migrations/20221026151025_training-modules-reservation-prompts.ts b/server/src/database/knex/migrations/20221026151025_training-modules-reservation-prompts.ts
similarity index 100%
rename from server/src/db/migrations/20221026151025_training-modules-reservation-prompts.ts
rename to server/src/database/knex/migrations/20221026151025_training-modules-reservation-prompts.ts
diff --git a/server/src/db/migrations/20230303194447_user_balances.ts b/server/src/database/knex/migrations/20230303194447_user_balances.ts
similarity index 100%
rename from server/src/db/migrations/20230303194447_user_balances.ts
rename to server/src/database/knex/migrations/20230303194447_user_balances.ts
diff --git a/server/src/db/migrations/20230305005055_archival_partitions.ts b/server/src/database/knex/migrations/20230305005055_archival_partitions.ts
similarity index 100%
rename from server/src/db/migrations/20230305005055_archival_partitions.ts
rename to server/src/database/knex/migrations/20230305005055_archival_partitions.ts
diff --git a/server/src/db/migrations/20230322212307_AnnouncementTable.ts b/server/src/database/knex/migrations/20230322212307_AnnouncementTable.ts
similarity index 100%
rename from server/src/db/migrations/20230322212307_AnnouncementTable.ts
rename to server/src/database/knex/migrations/20230322212307_AnnouncementTable.ts
diff --git a/server/src/db/migrations/20230329042437_default_archived.ts b/server/src/database/knex/migrations/20230329042437_default_archived.ts
similarity index 100%
rename from server/src/db/migrations/20230329042437_default_archived.ts
rename to server/src/database/knex/migrations/20230329042437_default_archived.ts
diff --git a/server/src/db/migrations/20230717132144_reader-table.ts b/server/src/database/knex/migrations/20230717132144_reader-table.ts
similarity index 100%
rename from server/src/db/migrations/20230717132144_reader-table.ts
rename to server/src/database/knex/migrations/20230717132144_reader-table.ts
diff --git a/server/src/db/migrations/20240723111717_access_checks.ts b/server/src/database/knex/migrations/20240723111717_access_checks.ts
similarity index 100%
rename from server/src/db/migrations/20240723111717_access_checks.ts
rename to server/src/database/knex/migrations/20240723111717_access_checks.ts
diff --git a/server/src/db/migrations/20240731140400_equipment_images.ts b/server/src/database/knex/migrations/20240731140400_equipment_images.ts
similarity index 100%
rename from server/src/db/migrations/20240731140400_equipment_images.ts
rename to server/src/database/knex/migrations/20240731140400_equipment_images.ts
diff --git a/server/src/db/migrations/20240812202510_module_submission_summary.ts b/server/src/database/knex/migrations/20240812202510_module_submission_summary.ts
similarity index 100%
rename from server/src/db/migrations/20240812202510_module_submission_summary.ts
rename to server/src/database/knex/migrations/20240812202510_module_submission_summary.ts
diff --git a/server/src/db/migrations/20240815170839_zone_hours_table.ts b/server/src/database/knex/migrations/20240815170839_zone_hours_table.ts
similarity index 100%
rename from server/src/db/migrations/20240815170839_zone_hours_table.ts
rename to server/src/database/knex/migrations/20240815170839_zone_hours_table.ts
diff --git a/server/src/db/migrations/20240816172414_equipment_sessions.ts b/server/src/database/knex/migrations/20240816172414_equipment_sessions.ts
similarity index 100%
rename from server/src/db/migrations/20240816172414_equipment_sessions.ts
rename to server/src/database/knex/migrations/20240816172414_equipment_sessions.ts
diff --git a/server/src/db/migrations/20240821200217_equipment_sessions_fk.ts b/server/src/database/knex/migrations/20240821200217_equipment_sessions_fk.ts
similarity index 100%
rename from server/src/db/migrations/20240821200217_equipment_sessions_fk.ts
rename to server/src/database/knex/migrations/20240821200217_equipment_sessions_fk.ts
diff --git a/server/src/db/migrations/20240821210303_equipment_sessions_fk2.ts b/server/src/database/knex/migrations/20240821210303_equipment_sessions_fk2.ts
similarity index 100%
rename from server/src/db/migrations/20240821210303_equipment_sessions_fk2.ts
rename to server/src/database/knex/migrations/20240821210303_equipment_sessions_fk2.ts
diff --git a/server/src/db/migrations/20240826134636_zone_hours_displayname.ts b/server/src/database/knex/migrations/20240826134636_zone_hours_displayname.ts
similarity index 100%
rename from server/src/db/migrations/20240826134636_zone_hours_displayname.ts
rename to server/src/database/knex/migrations/20240826134636_zone_hours_displayname.ts
diff --git a/server/src/db/migrations/20240826144013_zone_hours_seperate_zone_table.ts b/server/src/database/knex/migrations/20240826144013_zone_hours_seperate_zone_table.ts
similarity index 100%
rename from server/src/db/migrations/20240826144013_zone_hours_seperate_zone_table.ts
rename to server/src/database/knex/migrations/20240826144013_zone_hours_seperate_zone_table.ts
diff --git a/server/src/db/migrations/20240826145209_zone_table.ts b/server/src/database/knex/migrations/20240826145209_zone_table.ts
similarity index 100%
rename from server/src/db/migrations/20240826145209_zone_table.ts
rename to server/src/database/knex/migrations/20240826145209_zone_table.ts
diff --git a/server/src/db/migrations/20240826145348_rooms_for_zones_table.ts b/server/src/database/knex/migrations/20240826145348_rooms_for_zones_table.ts
similarity index 100%
rename from server/src/db/migrations/20240826145348_rooms_for_zones_table.ts
rename to server/src/database/knex/migrations/20240826145348_rooms_for_zones_table.ts
diff --git a/server/src/db/migrations/20240826145657_zone_hours_fk.ts b/server/src/database/knex/migrations/20240826145657_zone_hours_fk.ts
similarity index 100%
rename from server/src/db/migrations/20240826145657_zone_hours_fk.ts
rename to server/src/database/knex/migrations/20240826145657_zone_hours_fk.ts
diff --git a/server/src/db/migrations/20240826162654_remove_rooms_for_zones.ts b/server/src/database/knex/migrations/20240826162654_remove_rooms_for_zones.ts
similarity index 100%
rename from server/src/db/migrations/20240826162654_remove_rooms_for_zones.ts
rename to server/src/database/knex/migrations/20240826162654_remove_rooms_for_zones.ts
diff --git a/server/src/db/migrations/20240826162709_rooms_zone_col.ts b/server/src/database/knex/migrations/20240826162709_rooms_zone_col.ts
similarity index 100%
rename from server/src/db/migrations/20240826162709_rooms_zone_col.ts
rename to server/src/database/knex/migrations/20240826162709_rooms_zone_col.ts
diff --git a/server/src/db/migrations/20240827152638_zone_hours_zones_compatibility.ts b/server/src/database/knex/migrations/20240827152638_zone_hours_zones_compatibility.ts
similarity index 100%
rename from server/src/db/migrations/20240827152638_zone_hours_zones_compatibility.ts
rename to server/src/database/knex/migrations/20240827152638_zone_hours_zones_compatibility.ts
diff --git a/server/src/db/migrations/20240829152453_data_points.ts b/server/src/database/knex/migrations/20240829152453_data_points.ts
similarity index 100%
rename from server/src/db/migrations/20240829152453_data_points.ts
rename to server/src/database/knex/migrations/20240829152453_data_points.ts
diff --git a/server/src/db/migrations/20240913173936_equipment_sop_col.ts b/server/src/database/knex/migrations/20240913173936_equipment_sop_col.ts
similarity index 100%
rename from server/src/db/migrations/20240913173936_equipment_sop_col.ts
rename to server/src/database/knex/migrations/20240913173936_equipment_sop_col.ts
diff --git a/server/src/db/migrations/20240925142510_equipment_notes_col.ts b/server/src/database/knex/migrations/20240925142510_equipment_notes_col.ts
similarity index 100%
rename from server/src/db/migrations/20240925142510_equipment_notes_col.ts
rename to server/src/database/knex/migrations/20240925142510_equipment_notes_col.ts
diff --git a/server/src/db/migrations/20240925202857_inventory_item_permission_cols.ts b/server/src/database/knex/migrations/20240925202857_inventory_item_permission_cols.ts
similarity index 100%
rename from server/src/db/migrations/20240925202857_inventory_item_permission_cols.ts
rename to server/src/database/knex/migrations/20240925202857_inventory_item_permission_cols.ts
diff --git a/server/src/db/migrations/20240926161533_users_refreshToken.ts b/server/src/database/knex/migrations/20240926161533_users_refreshToken.ts
similarity index 100%
rename from server/src/db/migrations/20240926161533_users_refreshToken.ts
rename to server/src/database/knex/migrations/20240926161533_users_refreshToken.ts
diff --git a/server/src/db/migrations/20240930155347_inventory_ledger_table.ts b/server/src/database/knex/migrations/20240930155347_inventory_ledger_table.ts
similarity index 100%
rename from server/src/db/migrations/20240930155347_inventory_ledger_table.ts
rename to server/src/database/knex/migrations/20240930155347_inventory_ledger_table.ts
diff --git a/server/src/db/migrations/20241003133524_inventory_item_notes.ts b/server/src/database/knex/migrations/20241003133524_inventory_item_notes.ts
similarity index 100%
rename from server/src/db/migrations/20241003133524_inventory_item_notes.ts
rename to server/src/database/knex/migrations/20241003133524_inventory_item_notes.ts
diff --git a/server/src/db/migrations/20241004133234_user_notes.ts b/server/src/database/knex/migrations/20241004133234_user_notes.ts
similarity index 100%
rename from server/src/db/migrations/20241004133234_user_notes.ts
rename to server/src/database/knex/migrations/20241004133234_user_notes.ts
diff --git a/server/src/db/migrations/20241008185202_text_fields_table.ts b/server/src/database/knex/migrations/20241008185202_text_fields_table.ts
similarity index 100%
rename from server/src/db/migrations/20241008185202_text_fields_table.ts
rename to server/src/database/knex/migrations/20241008185202_text_fields_table.ts
diff --git a/server/src/db/migrations/20241010140920_audit_logs_category_col.ts b/server/src/database/knex/migrations/20241010140920_audit_logs_category_col.ts
similarity index 100%
rename from server/src/db/migrations/20241010140920_audit_logs_category_col.ts
rename to server/src/database/knex/migrations/20241010140920_audit_logs_category_col.ts
diff --git a/server/src/db/migrations/20241016200511_maintenance_log_table.ts b/server/src/database/knex/migrations/20241016200511_maintenance_log_table.ts
similarity index 100%
rename from server/src/db/migrations/20241016200511_maintenance_log_table.ts
rename to server/src/database/knex/migrations/20241016200511_maintenance_log_table.ts
diff --git a/server/src/db/migrations/20241017165101_reader_version_columns.ts b/server/src/database/knex/migrations/20241017165101_reader_version_columns.ts
similarity index 100%
rename from server/src/db/migrations/20241017165101_reader_version_columns.ts
rename to server/src/database/knex/migrations/20241017165101_reader_version_columns.ts
diff --git a/server/src/db/migrations/20241017193811_maintenance_tags.ts b/server/src/database/knex/migrations/20241017193811_maintenance_tags.ts
similarity index 100%
rename from server/src/db/migrations/20241017193811_maintenance_tags.ts
rename to server/src/database/knex/migrations/20241017193811_maintenance_tags.ts
diff --git a/server/src/db/migrations/20241017193911_resolution_logs_table.ts b/server/src/database/knex/migrations/20241017193911_resolution_logs_table.ts
similarity index 100%
rename from server/src/db/migrations/20241017193911_resolution_logs_table.ts
rename to server/src/database/knex/migrations/20241017193911_resolution_logs_table.ts
diff --git a/server/src/db/migrations/20241017195826_maintenance_logs_type_and_tags_cols.ts b/server/src/database/knex/migrations/20241017195826_maintenance_logs_type_and_tags_cols.ts
similarity index 100%
rename from server/src/db/migrations/20241017195826_maintenance_logs_type_and_tags_cols.ts
rename to server/src/database/knex/migrations/20241017195826_maintenance_logs_type_and_tags_cols.ts
diff --git a/server/src/db/migrations/20241022170731_equipment_instance_table.ts b/server/src/database/knex/migrations/20241022170731_equipment_instance_table.ts
similarity index 100%
rename from server/src/db/migrations/20241022170731_equipment_instance_table.ts
rename to server/src/database/knex/migrations/20241022170731_equipment_instance_table.ts
diff --git a/server/src/db/migrations/20241022170736_maintenance_log_instance_col.ts b/server/src/database/knex/migrations/20241022170736_maintenance_log_instance_col.ts
similarity index 100%
rename from server/src/db/migrations/20241022170736_maintenance_log_instance_col.ts
rename to server/src/database/knex/migrations/20241022170736_maintenance_log_instance_col.ts
diff --git a/server/src/db/migrations/20241022170738_resolution_log_instance_col.ts b/server/src/database/knex/migrations/20241022170738_resolution_log_instance_col.ts
similarity index 100%
rename from server/src/db/migrations/20241022170738_resolution_log_instance_col.ts
rename to server/src/database/knex/migrations/20241022170738_resolution_log_instance_col.ts
diff --git a/server/src/db/migrations/20241022170905_maintenance_tags_equipment_id_col.ts b/server/src/database/knex/migrations/20241022170905_maintenance_tags_equipment_id_col.ts
similarity index 100%
rename from server/src/db/migrations/20241022170905_maintenance_tags_equipment_id_col.ts
rename to server/src/database/knex/migrations/20241022170905_maintenance_tags_equipment_id_col.ts
diff --git a/server/src/db/migrations/20241028145830_resolution_log_issue_col.ts b/server/src/database/knex/migrations/20241028145830_resolution_log_issue_col.ts
similarity index 100%
rename from server/src/db/migrations/20241028145830_resolution_log_issue_col.ts
rename to server/src/database/knex/migrations/20241028145830_resolution_log_issue_col.ts
diff --git a/server/src/db/migrations/20241031175300_borrowable_item_types.ts b/server/src/database/knex/migrations/20241031175300_borrowable_item_types.ts
similarity index 100%
rename from server/src/db/migrations/20241031175300_borrowable_item_types.ts
rename to server/src/database/knex/migrations/20241031175300_borrowable_item_types.ts
diff --git a/server/src/db/migrations/20241031175443_borrowable_item_instances.ts b/server/src/database/knex/migrations/20241031175443_borrowable_item_instances.ts
similarity index 100%
rename from server/src/db/migrations/20241031175443_borrowable_item_instances.ts
rename to server/src/database/knex/migrations/20241031175443_borrowable_item_instances.ts
diff --git a/server/src/db/migrations/20241101132108_equipment_reservationonly_col.ts b/server/src/database/knex/migrations/20241101132108_equipment_reservationonly_col.ts
similarity index 100%
rename from server/src/db/migrations/20241101132108_equipment_reservationonly_col.ts
rename to server/src/database/knex/migrations/20241101132108_equipment_reservationonly_col.ts
diff --git a/server/src/db/migrations/20241101203417_tool_item_instance_borrower_col.ts b/server/src/database/knex/migrations/20241101203417_tool_item_instance_borrower_col.ts
similarity index 100%
rename from server/src/db/migrations/20241101203417_tool_item_instance_borrower_col.ts
rename to server/src/database/knex/migrations/20241101203417_tool_item_instance_borrower_col.ts
diff --git a/server/src/db/migrations/20241115202253_inventory_tags.ts b/server/src/database/knex/migrations/20241115202253_inventory_tags.ts
similarity index 100%
rename from server/src/db/migrations/20241115202253_inventory_tags.ts
rename to server/src/database/knex/migrations/20241115202253_inventory_tags.ts
diff --git a/server/src/db/migrations/20241115202420_inventory_item_tag_cols.ts b/server/src/database/knex/migrations/20241115202420_inventory_item_tag_cols.ts
similarity index 100%
rename from server/src/db/migrations/20241115202420_inventory_item_tag_cols.ts
rename to server/src/database/knex/migrations/20241115202420_inventory_item_tag_cols.ts
diff --git a/server/src/db/migrations/20241125154436_training_holds_table.ts b/server/src/database/knex/migrations/20241125154436_training_holds_table.ts
similarity index 100%
rename from server/src/db/migrations/20241125154436_training_holds_table.ts
rename to server/src/database/knex/migrations/20241125154436_training_holds_table.ts
diff --git a/server/src/db/migrations/20250519131956_time_of_session_start.ts b/server/src/database/knex/migrations/20250519131956_time_of_session_start.ts
similarity index 100%
rename from server/src/db/migrations/20250519131956_time_of_session_start.ts
rename to server/src/database/knex/migrations/20250519131956_time_of_session_start.ts
diff --git a/server/src/db/migrations/20250520141120_add_readers_shlug_id.ts b/server/src/database/knex/migrations/20250520141120_add_readers_shlug_id.ts
similarity index 100%
rename from server/src/db/migrations/20250520141120_add_readers_shlug_id.ts
rename to server/src/database/knex/migrations/20250520141120_add_readers_shlug_id.ts
diff --git a/server/src/db/migrations/20250521174308_websocket_reader_support.ts b/server/src/database/knex/migrations/20250521174308_websocket_reader_support.ts
similarity index 100%
rename from server/src/db/migrations/20250521174308_websocket_reader_support.ts
rename to server/src/database/knex/migrations/20250521174308_websocket_reader_support.ts
diff --git a/server/src/db/migrations/20250522161052_makerspace-image.ts b/server/src/database/knex/migrations/20250522161052_makerspace-image.ts
similarity index 100%
rename from server/src/db/migrations/20250522161052_makerspace-image.ts
rename to server/src/database/knex/migrations/20250522161052_makerspace-image.ts
diff --git a/server/src/db/migrations/20250523143236_websocket_reader_pairtime.ts b/server/src/database/knex/migrations/20250523143236_websocket_reader_pairtime.ts
similarity index 100%
rename from server/src/db/migrations/20250523143236_websocket_reader_pairtime.ts
rename to server/src/database/knex/migrations/20250523143236_websocket_reader_pairtime.ts
diff --git a/server/src/db/migrations/20250528125413_drop_university_id.ts b/server/src/database/knex/migrations/20250528125413_drop_university_id.ts
similarity index 100%
rename from server/src/db/migrations/20250528125413_drop_university_id.ts
rename to server/src/database/knex/migrations/20250528125413_drop_university_id.ts
diff --git a/server/src/db/migrations/20250529172722_permission-overhaul.ts b/server/src/database/knex/migrations/20250529172722_permission-overhaul.ts
similarity index 100%
rename from server/src/db/migrations/20250529172722_permission-overhaul.ts
rename to server/src/database/knex/migrations/20250529172722_permission-overhaul.ts
diff --git a/server/src/db/migrations/20250618180752_reader_structured_log.ts b/server/src/database/knex/migrations/20250618180752_reader_structured_log.ts
similarity index 100%
rename from server/src/db/migrations/20250618180752_reader_structured_log.ts
rename to server/src/database/knex/migrations/20250618180752_reader_structured_log.ts
diff --git a/server/src/db/migrations/20250623141909_inventory_carts.ts b/server/src/database/knex/migrations/20250623141909_inventory_carts.ts
similarity index 100%
rename from server/src/db/migrations/20250623141909_inventory_carts.ts
rename to server/src/database/knex/migrations/20250623141909_inventory_carts.ts
diff --git a/server/src/db/migrations/20250623142458_equipment-trainer.ts b/server/src/database/knex/migrations/20250623142458_equipment-trainer.ts
similarity index 100%
rename from server/src/db/migrations/20250623142458_equipment-trainer.ts
rename to server/src/database/knex/migrations/20250623142458_equipment-trainer.ts
diff --git a/server/src/db/migrations/20250623144747_inventory_items_for_carts.ts b/server/src/database/knex/migrations/20250623144747_inventory_items_for_carts.ts
similarity index 100%
rename from server/src/db/migrations/20250623144747_inventory_items_for_carts.ts
rename to server/src/database/knex/migrations/20250623144747_inventory_items_for_carts.ts
diff --git a/server/src/db/migrations/20250623145320_inventory_items_makerspace_col.ts b/server/src/database/knex/migrations/20250623145320_inventory_items_makerspace_col.ts
similarity index 100%
rename from server/src/db/migrations/20250623145320_inventory_items_makerspace_col.ts
rename to server/src/database/knex/migrations/20250623145320_inventory_items_makerspace_col.ts
diff --git a/server/src/db/migrations/20250714130116_welcome_readers.ts b/server/src/database/knex/migrations/20250714130116_welcome_readers.ts
similarity index 100%
rename from server/src/db/migrations/20250714130116_welcome_readers.ts
rename to server/src/database/knex/migrations/20250714130116_welcome_readers.ts
diff --git a/server/src/db/migrations/20250714173520_room-trainings.ts b/server/src/database/knex/migrations/20250714173520_room-trainings.ts
similarity index 100%
rename from server/src/db/migrations/20250714173520_room-trainings.ts
rename to server/src/database/knex/migrations/20250714173520_room-trainings.ts
diff --git a/server/src/db/migrations/20250716173102_training-overhaul.ts b/server/src/database/knex/migrations/20250716173102_training-overhaul.ts
similarity index 100%
rename from server/src/db/migrations/20250716173102_training-overhaul.ts
rename to server/src/database/knex/migrations/20250716173102_training-overhaul.ts
diff --git a/server/src/db/migrations/20250722182257_firmware_tracks.ts b/server/src/database/knex/migrations/20250722182257_firmware_tracks.ts
similarity index 100%
rename from server/src/db/migrations/20250722182257_firmware_tracks.ts
rename to server/src/database/knex/migrations/20250722182257_firmware_tracks.ts
diff --git a/server/src/db/migrations/20250724132630_hours-overhaul.ts b/server/src/database/knex/migrations/20250724132630_hours-overhaul.ts
similarity index 100%
rename from server/src/db/migrations/20250724132630_hours-overhaul.ts
rename to server/src/database/knex/migrations/20250724132630_hours-overhaul.ts
diff --git a/server/src/db/migrations/20250729150554_currency.ts b/server/src/database/knex/migrations/20250729150554_currency.ts
similarity index 100%
rename from server/src/db/migrations/20250729150554_currency.ts
rename to server/src/database/knex/migrations/20250729150554_currency.ts
diff --git a/server/src/db/migrations/20250805162118_archive-alumni.ts b/server/src/database/knex/migrations/20250805162118_archive-alumni.ts
similarity index 100%
rename from server/src/db/migrations/20250805162118_archive-alumni.ts
rename to server/src/database/knex/migrations/20250805162118_archive-alumni.ts
diff --git a/server/src/db/migrations/20250808134358_currency-ledger-tweaks.ts b/server/src/database/knex/migrations/20250808134358_currency-ledger-tweaks.ts
similarity index 100%
rename from server/src/db/migrations/20250808134358_currency-ledger-tweaks.ts
rename to server/src/database/knex/migrations/20250808134358_currency-ledger-tweaks.ts
diff --git a/server/src/db/migrations/20250812144441_cleanup_readers_table.ts b/server/src/database/knex/migrations/20250812144441_cleanup_readers_table.ts
similarity index 100%
rename from server/src/db/migrations/20250812144441_cleanup_readers_table.ts
rename to server/src/database/knex/migrations/20250812144441_cleanup_readers_table.ts
diff --git a/server/src/db/migrations/20250812160029_archive-zones.ts b/server/src/database/knex/migrations/20250812160029_archive-zones.ts
similarity index 100%
rename from server/src/db/migrations/20250812160029_archive-zones.ts
rename to server/src/database/knex/migrations/20250812160029_archive-zones.ts
diff --git a/server/src/db/migrations/20250814152708_session-storage.ts b/server/src/database/knex/migrations/20250814152708_session-storage.ts
similarity index 100%
rename from server/src/db/migrations/20250814152708_session-storage.ts
rename to server/src/database/knex/migrations/20250814152708_session-storage.ts
diff --git a/server/src/db/migrations/20250815135700_drop_old_hours_table.ts b/server/src/database/knex/migrations/20250815135700_drop_old_hours_table.ts
similarity index 100%
rename from server/src/db/migrations/20250815135700_drop_old_hours_table.ts
rename to server/src/database/knex/migrations/20250815135700_drop_old_hours_table.ts
diff --git a/server/src/db/migrations/20250827215729_ledger-details.ts b/server/src/database/knex/migrations/20250827215729_ledger-details.ts
similarity index 100%
rename from server/src/db/migrations/20250827215729_ledger-details.ts
rename to server/src/database/knex/migrations/20250827215729_ledger-details.ts
diff --git a/server/src/db/migrations/20250829162657_transaction-processing.ts b/server/src/database/knex/migrations/20250829162657_transaction-processing.ts
similarity index 95%
rename from server/src/db/migrations/20250829162657_transaction-processing.ts
rename to server/src/database/knex/migrations/20250829162657_transaction-processing.ts
index 554e55878..62ba223f9 100644
--- a/server/src/db/migrations/20250829162657_transaction-processing.ts
+++ b/server/src/database/knex/migrations/20250829162657_transaction-processing.ts
@@ -1,5 +1,5 @@
import type { Knex } from "knex";
-import { CurrencySource, CurrencyType } from "../../integrations/currency/types.js";
+import { CurrencySource, CurrencyType } from "../../../integrations/currency/types.js";
export async function up(knex: Knex): Promise {
diff --git a/server/src/db/migrations/20250905155623_no-more-privileges.ts b/server/src/database/knex/migrations/20250905155623_no-more-privileges.ts
similarity index 100%
rename from server/src/db/migrations/20250905155623_no-more-privileges.ts
rename to server/src/database/knex/migrations/20250905155623_no-more-privileges.ts
diff --git a/server/src/db/migrations/20250908154740_zone-to-makerspace.ts b/server/src/database/knex/migrations/20250908154740_zone-to-makerspace.ts
similarity index 100%
rename from server/src/db/migrations/20250908154740_zone-to-makerspace.ts
rename to server/src/database/knex/migrations/20250908154740_zone-to-makerspace.ts
diff --git a/server/src/db/migrations/20250909015107_hide-in-person.ts b/server/src/database/knex/migrations/20250909015107_hide-in-person.ts
similarity index 100%
rename from server/src/db/migrations/20250909015107_hide-in-person.ts
rename to server/src/database/knex/migrations/20250909015107_hide-in-person.ts
diff --git a/server/src/db/migrations/20250922193755_desc-for-makerspace.ts b/server/src/database/knex/migrations/20250922193755_desc-for-makerspace.ts
similarity index 100%
rename from server/src/db/migrations/20250922193755_desc-for-makerspace.ts
rename to server/src/database/knex/migrations/20250922193755_desc-for-makerspace.ts
diff --git a/server/src/db/migrations/20251016055224_training-submission-delete-cascade.ts b/server/src/database/knex/migrations/20251016055224_training-submission-delete-cascade.ts
similarity index 100%
rename from server/src/db/migrations/20251016055224_training-submission-delete-cascade.ts
rename to server/src/database/knex/migrations/20251016055224_training-submission-delete-cascade.ts
diff --git a/server/src/db/migrations/20251016175110_announcement-link-columns.ts b/server/src/database/knex/migrations/20251016175110_announcement-link-columns.ts
similarity index 100%
rename from server/src/db/migrations/20251016175110_announcement-link-columns.ts
rename to server/src/database/knex/migrations/20251016175110_announcement-link-columns.ts
diff --git a/server/src/db/migrations/20251024174942_custom-url-table.ts b/server/src/database/knex/migrations/20251024174942_custom-url-table.ts
similarity index 100%
rename from server/src/db/migrations/20251024174942_custom-url-table.ts
rename to server/src/database/knex/migrations/20251024174942_custom-url-table.ts
diff --git a/server/src/db/migrations/20251125223118_organization-notes.ts b/server/src/database/knex/migrations/20251125223118_organization-notes.ts
similarity index 100%
rename from server/src/db/migrations/20251125223118_organization-notes.ts
rename to server/src/database/knex/migrations/20251125223118_organization-notes.ts
diff --git a/server/src/db/migrations/20260113181404_reservations.ts b/server/src/database/knex/migrations/20260113181404_reservations.ts
similarity index 100%
rename from server/src/db/migrations/20260113181404_reservations.ts
rename to server/src/database/knex/migrations/20260113181404_reservations.ts
diff --git a/server/src/db/migrations/20260116142103_maintenance-tickets.ts b/server/src/database/knex/migrations/20260116142103_maintenance-tickets.ts
similarity index 100%
rename from server/src/db/migrations/20260116142103_maintenance-tickets.ts
rename to server/src/database/knex/migrations/20260116142103_maintenance-tickets.ts
diff --git a/server/src/db/migrations/20260126144801_temporary-cards.ts b/server/src/database/knex/migrations/20260126144801_temporary-cards.ts
similarity index 100%
rename from server/src/db/migrations/20260126144801_temporary-cards.ts
rename to server/src/database/knex/migrations/20260126144801_temporary-cards.ts
diff --git a/server/src/db/migrations/20260205181606_infinite-tags.ts b/server/src/database/knex/migrations/20260205181606_infinite-tags.ts
similarity index 100%
rename from server/src/db/migrations/20260205181606_infinite-tags.ts
rename to server/src/database/knex/migrations/20260205181606_infinite-tags.ts
diff --git a/server/src/db/migrations/20260209155821_devices-overhaul.ts b/server/src/database/knex/migrations/20260209155821_devices-overhaul.ts
similarity index 98%
rename from server/src/db/migrations/20260209155821_devices-overhaul.ts
rename to server/src/database/knex/migrations/20260209155821_devices-overhaul.ts
index 3ef95250a..c48b75e36 100644
--- a/server/src/db/migrations/20260209155821_devices-overhaul.ts
+++ b/server/src/database/knex/migrations/20260209155821_devices-overhaul.ts
@@ -1,7 +1,7 @@
import type { Knex } from "knex";
import { AccessControllerState, CoreInputMode, ReaderRow } from "../tables.js";
import * as ReaderRepo from "../../repositories/Readers/ReaderRepository.js"
-import { DispenserError } from "../../api/devices/cards/cardApi.js";
+import { DispenserError } from "../../../api/devices/cards/cardApi.js";
export function oldStateToStateEnum(oldState: string) {
switch (oldState) {
diff --git a/server/src/db/migrations/20260306202955_device-api.ts b/server/src/database/knex/migrations/20260306202955_device-api.ts
similarity index 100%
rename from server/src/db/migrations/20260306202955_device-api.ts
rename to server/src/database/knex/migrations/20260306202955_device-api.ts
diff --git a/server/src/db/migrations/20260319182335_wsacs2-fixes.ts b/server/src/database/knex/migrations/20260319182335_wsacs2-fixes.ts
similarity index 100%
rename from server/src/db/migrations/20260319182335_wsacs2-fixes.ts
rename to server/src/database/knex/migrations/20260319182335_wsacs2-fixes.ts
diff --git a/server/src/db/migrations/20260324175032_equipment-sublines.ts b/server/src/database/knex/migrations/20260324175032_equipment-sublines.ts
similarity index 100%
rename from server/src/db/migrations/20260324175032_equipment-sublines.ts
rename to server/src/database/knex/migrations/20260324175032_equipment-sublines.ts
diff --git a/server/src/db/migrations/20260408131946_equipment-controller-pairing.ts b/server/src/database/knex/migrations/20260408131946_equipment-controller-pairing.ts
similarity index 100%
rename from server/src/db/migrations/20260408131946_equipment-controller-pairing.ts
rename to server/src/database/knex/migrations/20260408131946_equipment-controller-pairing.ts
diff --git a/server/src/db/migrations/20260414183228_server-themes.ts b/server/src/database/knex/migrations/20260414183228_server-themes.ts
similarity index 100%
rename from server/src/db/migrations/20260414183228_server-themes.ts
rename to server/src/database/knex/migrations/20260414183228_server-themes.ts
diff --git a/server/src/db/seeds/seed_test_data.ts b/server/src/database/knex/seeds/seed_test_data.ts
similarity index 100%
rename from server/src/db/seeds/seed_test_data.ts
rename to server/src/database/knex/seeds/seed_test_data.ts
diff --git a/server/src/db/tables.ts b/server/src/database/knex/tables.ts
similarity index 99%
rename from server/src/db/tables.ts
rename to server/src/database/knex/tables.ts
index afae96a70..d2e5692ee 100644
--- a/server/src/db/tables.ts
+++ b/server/src/database/knex/tables.ts
@@ -4,8 +4,8 @@
* This contains the definitions for the objects every knex select operation will map to.
*/
-import { DispenserError } from "../api/devices/cards/cardApi.js";
-import { CurrencySource, CurrencyType } from "../integrations/currency/types.js";
+import { DispenserError } from "../../api/devices/cards/cardApi.js";
+import { CurrencySource, CurrencyType } from "../../integrations/currency/types.js";
import { ACSDeployment } from "../models/ACS/deployment.js";
import { CoreFlags } from "../models/api/ACSFormats.js";
diff --git a/server/src/models/ACS/component.ts b/server/src/database/models/ACS/component.ts
similarity index 100%
rename from server/src/models/ACS/component.ts
rename to server/src/database/models/ACS/component.ts
diff --git a/server/src/models/ACS/deployment.ts b/server/src/database/models/ACS/deployment.ts
similarity index 100%
rename from server/src/models/ACS/deployment.ts
rename to server/src/database/models/ACS/deployment.ts
diff --git a/server/src/models/api/ACSController.ts b/server/src/database/models/api/ACSController.ts
similarity index 100%
rename from server/src/models/api/ACSController.ts
rename to server/src/database/models/api/ACSController.ts
diff --git a/server/src/models/api/ACSFormats.ts b/server/src/database/models/api/ACSFormats.ts
similarity index 97%
rename from server/src/models/api/ACSFormats.ts
rename to server/src/database/models/api/ACSFormats.ts
index ed9609cf1..37858d9d1 100644
--- a/server/src/models/api/ACSFormats.ts
+++ b/server/src/database/models/api/ACSFormats.ts
@@ -1,4 +1,4 @@
-import { AccessControllerState, CoreInputMode } from "../../db/tables.js"
+import { AccessControllerState, CoreInputMode } from "../../knex/tables.js"
import { ACSDeployment } from "../ACS/deployment.js";
export interface CoreStatusReport {
diff --git a/server/src/models/api/ACSOrchestrator.ts b/server/src/database/models/api/ACSOrchestrator.ts
similarity index 99%
rename from server/src/models/api/ACSOrchestrator.ts
rename to server/src/database/models/api/ACSOrchestrator.ts
index 3b185075d..61c57b195 100644
--- a/server/src/models/api/ACSOrchestrator.ts
+++ b/server/src/database/models/api/ACSOrchestrator.ts
@@ -7,7 +7,7 @@ import * as DeviceLogRepo from "../../repositories/Logs/DeviceLogsRepository.js"
import * as UserRepo from "../../repositories/Users/UserRepository.js";
import * as MakerspaceRepo from "../../repositories/Makerspaces/MakerspaceRespository.js";
import * as DeviceRepo from "../../repositories/Devices/DeviceRepository.js";
-import { AccessControllerState, DeviceLogSeverity } from "../../db/tables.js";
+import { AccessControllerState, DeviceLogSeverity } from "../../knex/tables.js";
import { AccessAttemptReason } from "../devices/accessController.js";
import { Makerspace } from "../makerspaces/makerspace.js";
diff --git a/server/src/models/api/MQTTACSController.ts b/server/src/database/models/api/MQTTACSController.ts
similarity index 100%
rename from server/src/models/api/MQTTACSController.ts
rename to server/src/database/models/api/MQTTACSController.ts
diff --git a/server/src/models/api/WSACS/WSACSController.ts b/server/src/database/models/api/WSACS/WSACSController.ts
similarity index 99%
rename from server/src/models/api/WSACS/WSACSController.ts
rename to server/src/database/models/api/WSACS/WSACSController.ts
index 89994a08a..bf4fda4e9 100644
--- a/server/src/models/api/WSACS/WSACSController.ts
+++ b/server/src/database/models/api/WSACS/WSACSController.ts
@@ -4,7 +4,7 @@ import { CoreInfoRequests, WSACSCoreUnprompted, WSACSServerError, WSACSServerUnp
import * as CoreRepo from "../../../repositories/Devices/CoreRepository.js";
import * as UserRepo from "../../../repositories/Users/UserRepository.js";
import * as AuditLogRepo from "../../../repositories/AuditLogs/AuditLogRepository.js";
-import { AccessControllerState, DeviceLogSeverity } from "../../../db/tables.js";
+import { AccessControllerState, DeviceLogSeverity } from "../../../knex/tables.js";
import { AccessAttemptReason } from "../../devices/accessController.js";
import * as DeviceLogRepo from "../../../repositories/Logs/DeviceLogsRepository.js";
import * as DeviceRepo from "../../../repositories/Devices/DeviceRepository.js";
diff --git a/server/src/models/api/WSACS/WSACSFormats.ts b/server/src/database/models/api/WSACS/WSACSFormats.ts
similarity index 97%
rename from server/src/models/api/WSACS/WSACSFormats.ts
rename to server/src/database/models/api/WSACS/WSACSFormats.ts
index fbfdfecdc..1bff9b6a5 100644
--- a/server/src/models/api/WSACS/WSACSFormats.ts
+++ b/server/src/database/models/api/WSACS/WSACSFormats.ts
@@ -1,4 +1,4 @@
-import { AccessControllerState, CoreInputMode } from "../../../db/tables.js";
+import { AccessControllerState, CoreInputMode } from "../../../knex/tables.js";
import { AuditLog } from "../../logs/AuditLogs.js";
import { ACSDeployment } from "../../ACS/deployment.js";
import { CoreFlags } from "../ACSFormats.js";
diff --git a/server/src/models/devices/Dispenser.ts b/server/src/database/models/devices/Dispenser.ts
similarity index 78%
rename from server/src/models/devices/Dispenser.ts
rename to server/src/database/models/devices/Dispenser.ts
index 1e7725a3e..dfcbd6cdd 100644
--- a/server/src/models/devices/Dispenser.ts
+++ b/server/src/database/models/devices/Dispenser.ts
@@ -1,8 +1,8 @@
-import { DeviceRow, DispenserRow } from "../../db/tables.js";
+import { DeviceRow, DispenserRow } from "../../knex/tables.js";
import { Device } from "./device.js";
import * as DeviceRepo from "../../repositories/Devices/DeviceRepository.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { DispenserError } from "../../api/devices/cards/cardApi.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { DispenserError } from "../../../api/devices/cards/cardApi.js";
export class Dispenser extends Device implements DispenserRow {
deviceID: number;
diff --git a/server/src/models/devices/accessController.ts b/server/src/database/models/devices/accessController.ts
similarity index 99%
rename from server/src/models/devices/accessController.ts
rename to server/src/database/models/devices/accessController.ts
index 6061406e2..fc78e14ef 100644
--- a/server/src/models/devices/accessController.ts
+++ b/server/src/database/models/devices/accessController.ts
@@ -1,4 +1,4 @@
-import { AccessControllerRow, AccessControllerState } from "../../db/tables.js";
+import { AccessControllerRow, AccessControllerState } from "../../knex/tables.js";
import * as EquipmentInstanceRepo from "../../repositories/Equipment/EquipmentInstancesRepository.js";
import * as EquipmentRepo from "../../repositories/Equipment/EquipmentRepository.js";
import * as UserRepo from "../../repositories/Users/UserRepository.js";
diff --git a/server/src/models/devices/core.ts b/server/src/database/models/devices/core.ts
similarity index 97%
rename from server/src/models/devices/core.ts
rename to server/src/database/models/devices/core.ts
index 0999862ba..e195f34d4 100644
--- a/server/src/models/devices/core.ts
+++ b/server/src/database/models/devices/core.ts
@@ -1,8 +1,8 @@
-import { AccessControllerState, CoreInputMode, CoreRow, DeviceRow } from "../../db/tables.js";
+import { AccessControllerState, CoreInputMode, CoreRow, DeviceRow } from "../../knex/tables.js";
import { Device } from "./device.js";
import * as DeviceRepo from "../../repositories/Devices/DeviceRepository.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { CurrentUser } from "../../context.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { CurrentUser } from "../../../context.js";
import { AccessController } from "./accessController.js";
import * as ACRepo from "../../repositories/Devices/AccessControllerRepository.js";
import { CoreConfig } from "../api/WSACS/WSACSFormats.js";
diff --git a/server/src/models/devices/device.ts b/server/src/database/models/devices/device.ts
similarity index 97%
rename from server/src/models/devices/device.ts
rename to server/src/database/models/devices/device.ts
index b3638b30e..9b23576ab 100644
--- a/server/src/models/devices/device.ts
+++ b/server/src/database/models/devices/device.ts
@@ -1,5 +1,5 @@
import { createCipheriv, scryptSync } from "crypto";
-import { DeviceRow } from "../../db/tables.js";
+import { DeviceRow } from "../../knex/tables.js";
import * as DeviceRepo from "../../repositories/Devices/DeviceRepository.js";
export class Device implements DeviceRow {
diff --git a/server/src/models/equipment/Equipment.ts b/server/src/database/models/equipment/Equipment.ts
similarity index 98%
rename from server/src/models/equipment/Equipment.ts
rename to server/src/database/models/equipment/Equipment.ts
index 5ca93f4d0..835a083c9 100644
--- a/server/src/models/equipment/Equipment.ts
+++ b/server/src/database/models/equipment/Equipment.ts
@@ -1,4 +1,4 @@
-import { EquipmentRow } from "../../db/tables.js";
+import { EquipmentRow } from "../../knex/tables.js";
import { AccessAttemptReason } from "../devices/accessController.js";
import { User } from "../users/User.js";
import * as RoomRepo from "../../repositories/Rooms/RoomRepository.js";
diff --git a/server/src/models/logs/AuditLogs.ts b/server/src/database/models/logs/AuditLogs.ts
similarity index 100%
rename from server/src/models/logs/AuditLogs.ts
rename to server/src/database/models/logs/AuditLogs.ts
diff --git a/server/src/models/makerspaces/makerspace.ts b/server/src/database/models/makerspaces/makerspace.ts
similarity index 95%
rename from server/src/models/makerspaces/makerspace.ts
rename to server/src/database/models/makerspaces/makerspace.ts
index 798dc74d3..ce04f27bd 100644
--- a/server/src/models/makerspaces/makerspace.ts
+++ b/server/src/database/models/makerspaces/makerspace.ts
@@ -1,4 +1,4 @@
-import { MakerspaceRow } from "../../db/tables.js";
+import { MakerspaceRow } from "../../knex/tables.js";
import { Room } from "../rooms/room.js";
import * as RoomRepo from "../../repositories/Rooms/RoomRepository.js";
import * as UserRepo from "../../repositories/Users/UserRepository.js";
diff --git a/server/src/models/rooms/room.ts b/server/src/database/models/rooms/room.ts
similarity index 90%
rename from server/src/models/rooms/room.ts
rename to server/src/database/models/rooms/room.ts
index 0874be94b..e1e471895 100644
--- a/server/src/models/rooms/room.ts
+++ b/server/src/database/models/rooms/room.ts
@@ -1,4 +1,4 @@
-import { RoomRow } from "../../db/tables.js";
+import { RoomRow } from "../../knex/tables.js";
import * as RoomRepo from "../../repositories/Rooms/RoomRepository.js";
export class Room implements RoomRow {
diff --git a/server/src/models/site_settings/ServerThemeData.ts b/server/src/database/models/site_settings/ServerThemeData.ts
similarity index 100%
rename from server/src/models/site_settings/ServerThemeData.ts
rename to server/src/database/models/site_settings/ServerThemeData.ts
diff --git a/server/src/models/site_settings/SiteSettings.ts b/server/src/database/models/site_settings/SiteSettings.ts
similarity index 100%
rename from server/src/models/site_settings/SiteSettings.ts
rename to server/src/database/models/site_settings/SiteSettings.ts
diff --git a/server/src/models/users/User.ts b/server/src/database/models/users/User.ts
similarity index 98%
rename from server/src/models/users/User.ts
rename to server/src/database/models/users/User.ts
index c53f71aaf..11e608e7d 100644
--- a/server/src/models/users/User.ts
+++ b/server/src/database/models/users/User.ts
@@ -1,4 +1,4 @@
-import { RestrictionRow, UserRow } from "../../db/tables.js";
+import { RestrictionRow, UserRow } from "../../knex/tables.js";
import * as HoldsRepo from "../../repositories/Holds/HoldsRepository.js";
import * as RestrctionRepo from "../../repositories/Restrictions/RestrictionsRepository.js";
import * as UserRepo from "../../repositories/Users/UserRepository.js";
diff --git a/server/src/repositories/Announcements/AnnouncementsRepository.ts b/server/src/database/repositories/Announcements/AnnouncementsRepository.ts
similarity index 93%
rename from server/src/repositories/Announcements/AnnouncementsRepository.ts
rename to server/src/database/repositories/Announcements/AnnouncementsRepository.ts
index c386f2f07..8d567511b 100644
--- a/server/src/repositories/Announcements/AnnouncementsRepository.ts
+++ b/server/src/database/repositories/Announcements/AnnouncementsRepository.ts
@@ -2,9 +2,9 @@
* DB operations endpoint for Announcements table
*/
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { knex } from "../../db/index.js";
-import { AnnouncementRow } from "../../db/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { knex } from "../../knex/index.js";
+import { AnnouncementRow } from "../../knex/tables.js";
/**
* fetch every Announcement
diff --git a/server/src/repositories/AuditLogs/AuditLogRepository.ts b/server/src/database/repositories/AuditLogs/AuditLogRepository.ts
similarity index 98%
rename from server/src/repositories/AuditLogs/AuditLogRepository.ts
rename to server/src/database/repositories/AuditLogs/AuditLogRepository.ts
index b8d22fc84..13cac9839 100644
--- a/server/src/repositories/AuditLogs/AuditLogRepository.ts
+++ b/server/src/database/repositories/AuditLogs/AuditLogRepository.ts
@@ -2,8 +2,8 @@
* DB operations endpoint for AuditLog table
*/
-import { knex } from "../../db/index.js";
-import { AuditLogRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { AuditLogRow } from "../../knex/tables.js";
import { AuditLogEntity } from "../../models/logs/AuditLogs.js";
diff --git a/server/src/repositories/Currency/CurrencyAccountsRepository.ts b/server/src/database/repositories/Currency/CurrencyAccountsRepository.ts
similarity index 97%
rename from server/src/repositories/Currency/CurrencyAccountsRepository.ts
rename to server/src/database/repositories/Currency/CurrencyAccountsRepository.ts
index 9537f432b..d1e60fe7f 100644
--- a/server/src/repositories/Currency/CurrencyAccountsRepository.ts
+++ b/server/src/database/repositories/Currency/CurrencyAccountsRepository.ts
@@ -1,10 +1,10 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { CurrencyAccountsRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { CurrencyAccountsRow } from "../../knex/tables.js";
import * as OrgRepo from "../Users/OrganizationRepository.js";
import * as UserRepo from "../Users/UserRepository.js";
import * as CurrencyLedgerRepo from "./CurrencyLedgerRepository.js";
-import { CurrencyType } from "../../integrations/currency/types.js";
+import { CurrencyType } from "../../../integrations/currency/types.js";
type AccountOwner = {
displayName: string;
diff --git a/server/src/repositories/Currency/CurrencyLedgerRepository.ts b/server/src/database/repositories/Currency/CurrencyLedgerRepository.ts
similarity index 95%
rename from server/src/repositories/Currency/CurrencyLedgerRepository.ts
rename to server/src/database/repositories/Currency/CurrencyLedgerRepository.ts
index db74ffa35..b9fae24dc 100644
--- a/server/src/repositories/Currency/CurrencyLedgerRepository.ts
+++ b/server/src/database/repositories/Currency/CurrencyLedgerRepository.ts
@@ -1,9 +1,9 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { CurrencyLedgerRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { CurrencyLedgerRow } from "../../knex/tables.js";
import * as OrgRepo from "../Users/OrganizationRepository.js";
import * as UserRepo from "../Users/UserRepository.js";
-import { CurrencyType } from "../../integrations/currency/types.js";
+import { CurrencyType } from "../../../integrations/currency/types.js";
export async function createCurrencyLedgerEntry(
accountID: number,
diff --git a/server/src/repositories/Currency/TransactionRepository.ts b/server/src/database/repositories/Currency/TransactionRepository.ts
similarity index 97%
rename from server/src/repositories/Currency/TransactionRepository.ts
rename to server/src/database/repositories/Currency/TransactionRepository.ts
index 54c4a670b..135a70bd1 100644
--- a/server/src/repositories/Currency/TransactionRepository.ts
+++ b/server/src/database/repositories/Currency/TransactionRepository.ts
@@ -1,6 +1,6 @@
-import { knex } from "../../db/index.js";
-import { CurrencyLedgerRow, TransactionEntryRow, TransactionRow } from "../../db/tables.js";
-import { CurrencySource, CurrencyType } from "../../integrations/currency/types.js";
+import { knex } from "../../knex/index.js";
+import { CurrencyLedgerRow, TransactionEntryRow, TransactionRow } from "../../knex/tables.js";
+import { CurrencySource, CurrencyType } from "../../../integrations/currency/types.js";
import { createUnassocaitedAuditLog } from "../AuditLogs/AuditLogRepository.js";
/**
diff --git a/server/src/repositories/DataPoints/DataPointsRepository.ts b/server/src/database/repositories/DataPoints/DataPointsRepository.ts
similarity index 55%
rename from server/src/repositories/DataPoints/DataPointsRepository.ts
rename to server/src/database/repositories/DataPoints/DataPointsRepository.ts
index 393875b8b..a391feb96 100644
--- a/server/src/repositories/DataPoints/DataPointsRepository.ts
+++ b/server/src/database/repositories/DataPoints/DataPointsRepository.ts
@@ -5,21 +5,21 @@
*/
-import { knex } from "../../db/index.js";
-import { DataPointsRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { DataPointsRow } from "../../knex/tables.js";
export async function getDataPointByID(id: number): Promise {
- return await knex("DataPoints").select().where({id}).first();
+ return await knex("DataPoints").select().where({ id }).first();
}
export async function setDataPointValue(id: number, value: number): Promise {
- return await knex("DataPoints").update({value}).where({id});
+ return await knex("DataPoints").update({ value }).where({ id });
}
export async function incrementDataPointValue(id: number, increment: number): Promise {
const data = await getDataPointByID(id);
if (!data) return -1;
- return await knex("DataPoints").update({value: (Number(data.value) + Number(increment))}).where({id});
+ return await knex("DataPoints").update({ value: (Number(data.value) + Number(increment)) }).where({ id });
}
\ No newline at end of file
diff --git a/server/src/repositories/Devices/AccessControllerRepository.ts b/server/src/database/repositories/Devices/AccessControllerRepository.ts
similarity index 98%
rename from server/src/repositories/Devices/AccessControllerRepository.ts
rename to server/src/database/repositories/Devices/AccessControllerRepository.ts
index 6859a6853..3e168227f 100644
--- a/server/src/repositories/Devices/AccessControllerRepository.ts
+++ b/server/src/database/repositories/Devices/AccessControllerRepository.ts
@@ -1,6 +1,6 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { AccessControllerRow, AccessControllerState } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { AccessControllerRow, AccessControllerState } from "../../knex/tables.js";
import { AccessController } from "../../models/devices/accessController.js";
export async function getAccessControllersByDeviceID(deviceID: number): Promise {
diff --git a/server/src/repositories/Devices/CoreRepository.ts b/server/src/database/repositories/Devices/CoreRepository.ts
similarity index 97%
rename from server/src/repositories/Devices/CoreRepository.ts
rename to server/src/database/repositories/Devices/CoreRepository.ts
index e7a2f664d..998484104 100644
--- a/server/src/repositories/Devices/CoreRepository.ts
+++ b/server/src/database/repositories/Devices/CoreRepository.ts
@@ -1,12 +1,12 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { AccessControllerState, CoreInputMode, CoreRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { AccessControllerState, CoreInputMode, CoreRow } from "../../knex/tables.js";
import { Core } from "../../models/devices/core.js";
import * as ACRepo from "./AccessControllerRepository.js";
import * as DeviceRepo from "./DeviceRepository.js";
import { ACSDeployment } from "../../models/ACS/deployment.js";
import { CoreFlags } from "../../models/api/ACSFormats.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
export async function getCoreByDeviceID(deviceID: number): Promise {
const rawRow = await knex("Cores").where("deviceID", deviceID).first();
diff --git a/server/src/repositories/Devices/DeviceRepository.ts b/server/src/database/repositories/Devices/DeviceRepository.ts
similarity index 97%
rename from server/src/repositories/Devices/DeviceRepository.ts
rename to server/src/database/repositories/Devices/DeviceRepository.ts
index cdeaac640..804c6b232 100644
--- a/server/src/repositories/Devices/DeviceRepository.ts
+++ b/server/src/database/repositories/Devices/DeviceRepository.ts
@@ -1,6 +1,6 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { DeviceRow, MakerspaceRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { DeviceRow, MakerspaceRow } from "../../knex/tables.js";
import { Device } from "../../models/devices/device.js";
import { generateRandomHumanName } from "../../data/humanReadableNames.js";
import { randomInt } from "crypto";
diff --git a/server/src/repositories/Devices/DispenserRepository.ts b/server/src/database/repositories/Devices/DispenserRepository.ts
similarity index 94%
rename from server/src/repositories/Devices/DispenserRepository.ts
rename to server/src/database/repositories/Devices/DispenserRepository.ts
index d3d79c6b4..ec59ce7f3 100644
--- a/server/src/repositories/Devices/DispenserRepository.ts
+++ b/server/src/database/repositories/Devices/DispenserRepository.ts
@@ -1,4 +1,4 @@
-import { knex } from "../../db/index.js";
+import { knex } from "../../knex/index.js";
import { Dispenser } from "../../models/devices/Dispenser.js";
import * as DeviceRepo from "./DeviceRepository.js";
diff --git a/server/src/repositories/Equipment/AccessChecksRepository.ts b/server/src/database/repositories/Equipment/AccessChecksRepository.ts
similarity index 97%
rename from server/src/repositories/Equipment/AccessChecksRepository.ts
rename to server/src/database/repositories/Equipment/AccessChecksRepository.ts
index c458e228c..7d6bff1c7 100644
--- a/server/src/repositories/Equipment/AccessChecksRepository.ts
+++ b/server/src/database/repositories/Equipment/AccessChecksRepository.ts
@@ -2,8 +2,8 @@
* DB operations endpoint for AccessChecks table
*/
-import { knex } from "../../db/index.js";
-import { AccessCheckRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { AccessCheckRow } from "../../knex/tables.js";
/**
diff --git a/server/src/repositories/Equipment/EquipmentInstancesRepository.ts b/server/src/database/repositories/Equipment/EquipmentInstancesRepository.ts
similarity index 96%
rename from server/src/repositories/Equipment/EquipmentInstancesRepository.ts
rename to server/src/database/repositories/Equipment/EquipmentInstancesRepository.ts
index e232203d5..fc7c99038 100644
--- a/server/src/repositories/Equipment/EquipmentInstancesRepository.ts
+++ b/server/src/database/repositories/Equipment/EquipmentInstancesRepository.ts
@@ -3,8 +3,8 @@
* DB Operations for Equipment Instances
*/
-import { knex } from "../../db/index.js";
-import { EquipmentInstancesRow, ReaderRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { EquipmentInstancesRow, ReaderRow } from "../../knex/tables.js";
/**
* Fetch all EquipmentInstances related to noted Equipment
diff --git a/server/src/repositories/Equipment/EquipmentRepository.ts b/server/src/database/repositories/Equipment/EquipmentRepository.ts
similarity index 97%
rename from server/src/repositories/Equipment/EquipmentRepository.ts
rename to server/src/database/repositories/Equipment/EquipmentRepository.ts
index 13dab942b..da5b2223d 100644
--- a/server/src/repositories/Equipment/EquipmentRepository.ts
+++ b/server/src/database/repositories/Equipment/EquipmentRepository.ts
@@ -2,10 +2,10 @@
* DB operations endpoint for Equipment table
*/
-import { knex } from "../../db/index.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { EquipmentRow, TrainingModuleRow, UserRow } from "../../db/tables.js";
-import { EquipmentInput } from "../../schemas/equipmentSchema.js";
+import { knex } from "../../knex/index.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { EquipmentRow, TrainingModuleRow, UserRow } from "../../knex/tables.js";
+import { EquipmentInput } from "../../../graphql/schemas/equipmentSchema.js";
import * as ModuleRepo from "../Training/ModuleRepository.js";
import * as HoldsRepo from "../Holds/HoldsRepository.js";
import * as UserRepo from "../Users/UserRepository.js";
diff --git a/server/src/repositories/Equipment/EquipmentSessionsRepository.ts b/server/src/database/repositories/Equipment/EquipmentSessionsRepository.ts
similarity index 94%
rename from server/src/repositories/Equipment/EquipmentSessionsRepository.ts
rename to server/src/database/repositories/Equipment/EquipmentSessionsRepository.ts
index dc8b16e12..e2f0f1bc0 100644
--- a/server/src/repositories/Equipment/EquipmentSessionsRepository.ts
+++ b/server/src/database/repositories/Equipment/EquipmentSessionsRepository.ts
@@ -3,8 +3,8 @@
* DB Operations for Equipment Sessions
*/
-import { knex } from "../../db/index.js";
-import { EquipmentSessionRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { EquipmentSessionRow } from "../../knex/tables.js";
/**
* Insert a new Equipment Session into table
diff --git a/server/src/repositories/Equipment/MaintenanceTicketRepository.ts b/server/src/database/repositories/Equipment/MaintenanceTicketRepository.ts
similarity index 98%
rename from server/src/repositories/Equipment/MaintenanceTicketRepository.ts
rename to server/src/database/repositories/Equipment/MaintenanceTicketRepository.ts
index bdeb306e7..fe4232597 100644
--- a/server/src/repositories/Equipment/MaintenanceTicketRepository.ts
+++ b/server/src/database/repositories/Equipment/MaintenanceTicketRepository.ts
@@ -1,6 +1,6 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { MaintenanceTicketRow, MaintenanceTicketSeverity, MaintenanceTicketStatus, MaintenanceTicketType } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { MaintenanceTicketRow, MaintenanceTicketSeverity, MaintenanceTicketStatus, MaintenanceTicketType } from "../../knex/tables.js";
import { addHours, endOfDay } from "date-fns"
export async function createMaintenanceTicket(
diff --git a/server/src/repositories/Equipment/ReservationRepository.ts b/server/src/database/repositories/Equipment/ReservationRepository.ts
similarity index 94%
rename from server/src/repositories/Equipment/ReservationRepository.ts
rename to server/src/database/repositories/Equipment/ReservationRepository.ts
index 3fbd92fe6..ef4b75846 100644
--- a/server/src/repositories/Equipment/ReservationRepository.ts
+++ b/server/src/database/repositories/Equipment/ReservationRepository.ts
@@ -1,5 +1,5 @@
-import { ReservationRow } from "../../db/tables.js";
-import { knex } from "../../db/index.js";
+import { ReservationRow } from "../../knex/tables.js";
+import { knex } from "../../knex/index.js";
export async function createReservation(userID: number, equipmentID: number, start: string, end: string, description?: string, approved?: boolean): Promise {
return (await knex("Reservations").insert({
diff --git a/server/src/repositories/Holds/HoldsRepository.ts b/server/src/database/repositories/Holds/HoldsRepository.ts
similarity index 93%
rename from server/src/repositories/Holds/HoldsRepository.ts
rename to server/src/database/repositories/Holds/HoldsRepository.ts
index 41360add9..598b9eae9 100644
--- a/server/src/repositories/Holds/HoldsRepository.ts
+++ b/server/src/database/repositories/Holds/HoldsRepository.ts
@@ -2,9 +2,9 @@
* DB operations endpoint for Holds table
*/
-import { knex } from "../../db/index.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { HoldRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { HoldRow } from "../../knex/tables.js";
/**
* Fetcha hold by it's unique ID
diff --git a/server/src/database/repositories/Links/customUrlRepository.ts b/server/src/database/repositories/Links/customUrlRepository.ts
new file mode 100644
index 000000000..470a4904e
--- /dev/null
+++ b/server/src/database/repositories/Links/customUrlRepository.ts
@@ -0,0 +1,29 @@
+import { knex } from "../../knex/index.js";
+import { CustomUrlRow } from "../../knex/tables.js";
+import { CustomUrlInput } from "../../../graphql/schemas/customUrlSchema.js";
+
+export async function getCustomUrl(shortUrl: string): Promise {
+ return await knex('CustomUrls').select('*').where({ shortUrl }).first();
+}
+
+export async function getCustomUrls() {
+ return await knex('CustomUrls').select('*').orderBy("id", "asc");
+}
+
+export async function getCustomUrlById(id: number): Promise {
+ return await knex('CustomUrls').select('*').where({ id }).first();
+}
+
+export async function createCustomUrl(shortUrl: string, longUrl: string): Promise {
+ const customUrlRow = (await knex('CustomUrls').insert({ shortUrl, longUrl }).returning('*'))[0];
+ return customUrlRow
+}
+
+export async function updateCustomUrl(id: number, customUrl: CustomUrlInput): Promise {
+ await knex('CustomUrls').where('id', id).update({ shortUrl: customUrl.shortUrl, longUrl: customUrl.longUrl });
+ return getCustomUrlById(id);
+}
+
+export async function deleteCustomUrl(id: number) {
+ return await knex('CustomUrls').delete().where({ id });
+}
\ No newline at end of file
diff --git a/server/src/repositories/Logs/DeviceLogsRepository.ts b/server/src/database/repositories/Logs/DeviceLogsRepository.ts
similarity index 83%
rename from server/src/repositories/Logs/DeviceLogsRepository.ts
rename to server/src/database/repositories/Logs/DeviceLogsRepository.ts
index befa42658..247cf36b2 100644
--- a/server/src/repositories/Logs/DeviceLogsRepository.ts
+++ b/server/src/database/repositories/Logs/DeviceLogsRepository.ts
@@ -1,5 +1,5 @@
-import { DeviceLogRow, DeviceLogSeverity } from "../../db/tables.js";
-import { knex } from "../../db/index.js";
+import { DeviceLogRow, DeviceLogSeverity } from "../../knex/tables.js";
+import { knex } from "../../knex/index.js";
export async function createDeviceLog(deviceID: number | undefined, severity: DeviceLogSeverity, log: object): Promise {
if (severity === DeviceLogSeverity.HIGH) {
diff --git a/server/src/repositories/Logs/UnlockAtemptRepository.ts b/server/src/database/repositories/Logs/UnlockAtemptRepository.ts
similarity index 82%
rename from server/src/repositories/Logs/UnlockAtemptRepository.ts
rename to server/src/database/repositories/Logs/UnlockAtemptRepository.ts
index f20625e7e..f81f74876 100644
--- a/server/src/repositories/Logs/UnlockAtemptRepository.ts
+++ b/server/src/database/repositories/Logs/UnlockAtemptRepository.ts
@@ -1,5 +1,5 @@
-import { knex } from "../../db/index.js";
-import { UnlockAttemptLogRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { UnlockAttemptLogRow } from "../../knex/tables.js";
export async function createUnlockAttemptLog(
equipmentID: number | undefined,
diff --git a/server/src/repositories/Makerspaces/MakerspaceHoursRepository.ts b/server/src/database/repositories/Makerspaces/MakerspaceHoursRepository.ts
similarity index 97%
rename from server/src/repositories/Makerspaces/MakerspaceHoursRepository.ts
rename to server/src/database/repositories/Makerspaces/MakerspaceHoursRepository.ts
index 0b7292736..a93a6b09f 100644
--- a/server/src/repositories/Makerspaces/MakerspaceHoursRepository.ts
+++ b/server/src/database/repositories/Makerspaces/MakerspaceHoursRepository.ts
@@ -4,8 +4,8 @@
*/
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { DefaultHoursRow, SpecialHoursRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { DefaultHoursRow, SpecialHoursRow } from "../../knex/tables.js";
const full_formatter = new Intl.DateTimeFormat("en-US", {
timeZone: "America/New_York",
diff --git a/server/src/repositories/Makerspaces/MakerspaceRespository.ts b/server/src/database/repositories/Makerspaces/MakerspaceRespository.ts
similarity index 97%
rename from server/src/repositories/Makerspaces/MakerspaceRespository.ts
rename to server/src/database/repositories/Makerspaces/MakerspaceRespository.ts
index d456adf16..4353540ee 100644
--- a/server/src/repositories/Makerspaces/MakerspaceRespository.ts
+++ b/server/src/database/repositories/Makerspaces/MakerspaceRespository.ts
@@ -3,9 +3,9 @@
* DB Operations for Makerspaces
*/
-import { knex } from '../../db/index.js';
-import { TrainingModuleRow, MakerspaceRow, UserRow } from '../../db/tables.js';
-import { MakerspaceInput } from '../../schemas/makerspacesSchema.js';
+import { knex } from '../../knex/index.js';
+import { TrainingModuleRow, MakerspaceRow, UserRow } from '../../knex/tables.js';
+import { MakerspaceInput } from '../../../graphql/schemas/makerspacesSchema.js';
import * as ModuleRepo from '../Training/ModuleRepository.js';
diff --git a/server/src/repositories/Readers/ReaderRepository.ts b/server/src/database/repositories/Readers/ReaderRepository.ts
similarity index 99%
rename from server/src/repositories/Readers/ReaderRepository.ts
rename to server/src/database/repositories/Readers/ReaderRepository.ts
index 4fed4ef9b..a9cdce972 100644
--- a/server/src/repositories/Readers/ReaderRepository.ts
+++ b/server/src/database/repositories/Readers/ReaderRepository.ts
@@ -3,8 +3,8 @@
* DB Operations for Readers (ACS Devices)
*/
-import { knex } from "../../db/index.js";
-import { ReaderLogRow, ReaderRow, TextFieldRow, MakerspaceRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { ReaderLogRow, ReaderRow, TextFieldRow, MakerspaceRow } from "../../knex/tables.js";
import { getMakerspaceByID } from "../Makerspaces/MakerspaceRespository.js";
/**
diff --git a/server/src/repositories/Restrictions/RestrictionsRepository.ts b/server/src/database/repositories/Restrictions/RestrictionsRepository.ts
similarity index 85%
rename from server/src/repositories/Restrictions/RestrictionsRepository.ts
rename to server/src/database/repositories/Restrictions/RestrictionsRepository.ts
index b783d5130..1076cf249 100644
--- a/server/src/repositories/Restrictions/RestrictionsRepository.ts
+++ b/server/src/database/repositories/Restrictions/RestrictionsRepository.ts
@@ -1,12 +1,12 @@
-import { knex } from "../../db/index.js";
-import { RestrictionRow } from "../../db/tables.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
+import { knex } from "../../knex/index.js";
+import { RestrictionRow } from "../../knex/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
/**
* Function to get restriction by ID
*/
export async function getRestriction(id: number): Promise {
- const restriciton = await knex("Restrictions").first().where({id: id});
+ const restriciton = await knex("Restrictions").first().where({ id: id });
if (!restriciton) throw new EntityNotFound(`Restriction #${id} Not Found`);
@@ -43,7 +43,7 @@ export async function createRestriction(
* @param id id of the restriciton to delete
*/
export async function deleteRestriction(id: number): Promise {
- await knex("Restrictions").delete().where({id: id});
+ await knex("Restrictions").delete().where({ id: id });
return true;
}
@@ -53,7 +53,7 @@ export async function deleteRestriction(id: number): Promise {
* @returns An array of @type {RestrictionRow}
*/
export async function getRestrictionsByUserID(userID: number): Promise {
- return await knex("Restrictions").select().where({userID: userID}).orderBy("createDate", "desc");
+ return await knex("Restrictions").select().where({ userID: userID }).orderBy("createDate", "desc");
}
/**
diff --git a/server/src/repositories/Rooms/RoomRepository.ts b/server/src/database/repositories/Rooms/RoomRepository.ts
similarity index 97%
rename from server/src/repositories/Rooms/RoomRepository.ts
rename to server/src/database/repositories/Rooms/RoomRepository.ts
index ad184a30a..d8fadb355 100644
--- a/server/src/repositories/Rooms/RoomRepository.ts
+++ b/server/src/database/repositories/Rooms/RoomRepository.ts
@@ -3,10 +3,10 @@
*/
import { Room } from "../../models/rooms/room.js";
-import { knex } from "../../db/index.js";
+import { knex } from "../../knex/index.js";
import assert from "assert";
-import { RoomSwipeRow, TrainingModuleRow } from "../../db/tables.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
+import { RoomSwipeRow, TrainingModuleRow } from "../../knex/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
import * as ModuleRepo from "../Training/ModuleRepository.js";
/**
diff --git a/server/src/repositories/SiteSettings/ThemesRepository.ts b/server/src/database/repositories/SiteSettings/ThemesRepository.ts
similarity index 92%
rename from server/src/repositories/SiteSettings/ThemesRepository.ts
rename to server/src/database/repositories/SiteSettings/ThemesRepository.ts
index cc0be6c16..1c30d0373 100644
--- a/server/src/repositories/SiteSettings/ThemesRepository.ts
+++ b/server/src/database/repositories/SiteSettings/ThemesRepository.ts
@@ -1,5 +1,5 @@
-import { knex } from "../../db/index.js";
-import { ThemeRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { ThemeRow } from "../../knex/tables.js";
export async function getThemes(): Promise {
return await knex("Themes").select("*").orderBy("id", "asc");
diff --git a/server/src/repositories/Store/InventoryCartsRepository.ts b/server/src/database/repositories/Store/InventoryCartsRepository.ts
similarity index 96%
rename from server/src/repositories/Store/InventoryCartsRepository.ts
rename to server/src/database/repositories/Store/InventoryCartsRepository.ts
index 2e3e7e9e1..d4191bbfa 100644
--- a/server/src/repositories/Store/InventoryCartsRepository.ts
+++ b/server/src/database/repositories/Store/InventoryCartsRepository.ts
@@ -3,8 +3,8 @@
* DB Operations for Inventory Carts
*/
-import { knex } from "../../db/index.js";
-import { InventoryCartsRow, InventoryItemRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { InventoryCartsRow, InventoryItemRow } from "../../knex/tables.js";
export async function getInventoryCarts(): Promise {
return await knex("InventoryCarts").select();
diff --git a/server/src/repositories/Store/InventoryLedgerRepository.ts b/server/src/database/repositories/Store/InventoryLedgerRepository.ts
similarity index 92%
rename from server/src/repositories/Store/InventoryLedgerRepository.ts
rename to server/src/database/repositories/Store/InventoryLedgerRepository.ts
index 1b345333f..7ada592f5 100644
--- a/server/src/repositories/Store/InventoryLedgerRepository.ts
+++ b/server/src/database/repositories/Store/InventoryLedgerRepository.ts
@@ -3,9 +3,8 @@
* DB Operations for Inventory Ledgers
*/
-import { knex } from "../../db/index.js";
-import { InventoryLedgerRow } from "../../db/tables.js";
-import { InventoryItem } from "../../schemas/storeFrontSchema.js";
+import { knex } from "../../knex/index.js";
+import { InventoryLedgerRow } from "../../knex/tables.js";
/**
* Get the first 100 Inventory Ledgers by search params
diff --git a/server/src/repositories/Store/InventoryRepository.ts b/server/src/database/repositories/Store/InventoryRepository.ts
similarity index 97%
rename from server/src/repositories/Store/InventoryRepository.ts
rename to server/src/database/repositories/Store/InventoryRepository.ts
index b79a0788a..81badd9fd 100644
--- a/server/src/repositories/Store/InventoryRepository.ts
+++ b/server/src/database/repositories/Store/InventoryRepository.ts
@@ -2,14 +2,14 @@
* DB operations endpoint for Holds table
*/
-import { knex } from "../../db/index.js";
-import { InventoryItemRow, InventoryTagRow } from "../../db/tables.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
+import { knex } from "../../knex/index.js";
+import { InventoryItemRow, InventoryTagRow } from "../../knex/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
import {
InventoryItem,
InventoryItemInput,
-} from "../../schemas/storeFrontSchema.js";
+} from "../../../graphql/schemas/storeFrontSchema.js";
/**
* Fetch all Inventory Items
diff --git a/server/src/repositories/Store/ToolItemInstancesRepository.ts b/server/src/database/repositories/Store/ToolItemInstancesRepository.ts
similarity index 78%
rename from server/src/repositories/Store/ToolItemInstancesRepository.ts
rename to server/src/database/repositories/Store/ToolItemInstancesRepository.ts
index 2fd7efe50..97ff49869 100644
--- a/server/src/repositories/Store/ToolItemInstancesRepository.ts
+++ b/server/src/database/repositories/Store/ToolItemInstancesRepository.ts
@@ -3,8 +3,8 @@
* DB Operations for Tool Item Instances
*/
-import { knex } from "../../db/index.js";
-import { ToolItemInstancesRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { ToolItemInstancesRow } from "../../knex/tables.js";
/**
* Fetch all Tool Item Instances
@@ -20,7 +20,7 @@ export async function getToolItemInstances(): Promise {
* @returns all matching Tool Item Instances
*/
export async function getToolItemInstancesByType(typeID: number): Promise {
- return await knex("ToolItemInstances").select().where({typeID}).orderBy("id");
+ return await knex("ToolItemInstances").select().where({ typeID }).orderBy("id");
}
/**
@@ -29,7 +29,7 @@ export async function getToolItemInstancesByType(typeID: number): Promise {
- return await knex("ToolItemInstances").select().where({id}).first();
+ return await knex("ToolItemInstances").select().where({ id }).first();
}
/**
@@ -38,7 +38,7 @@ export async function getToolItemInstanceByID(id: number): Promise {
- return await knex("ToolItemInstances").select().where({borrowerUserID});
+ return await knex("ToolItemInstances").select().where({ borrowerUserID });
}
/**
@@ -53,7 +53,7 @@ export async function getToolItemInstancesByBorrower(borrowerUserID: number): Pr
* @returns new ToolItemInstance
*/
export async function createToolItemInstance(typeID: number, uniqueIdentifier: string, locationRoomID: number | undefined, locationDescription: string | undefined, condition: string, status: string, notes: string | undefined): Promise {
- return await knex("ToolItemInstances").insert({typeID, uniqueIdentifier, locationRoomID, locationDescription, condition, status, notes});
+ return await knex("ToolItemInstances").insert({ typeID, uniqueIdentifier, locationRoomID, locationDescription, condition, status, notes });
}
/**
@@ -69,7 +69,7 @@ export async function createToolItemInstance(typeID: number, uniqueIdentifier: s
* @returns updated Tool Item Instance
*/
export async function updateToolItemInstance(id: number, typeID: number, uniqueIdentifier: string, locationRoomID: number | undefined, locationDescription: string | undefined, condition: string, status: string, notes: string | undefined): Promise {
- return (await knex("ToolItemInstances").update({typeID, uniqueIdentifier, locationRoomID, locationDescription, condition, status, notes}).where({id}).returning("*"))[0];
+ return (await knex("ToolItemInstances").update({ typeID, uniqueIdentifier, locationRoomID, locationDescription, condition, status, notes }).where({ id }).returning("*"))[0];
}
/**
@@ -78,7 +78,7 @@ export async function updateToolItemInstance(id: number, typeID: number, uniqueI
* @returns true
*/
export async function deleteToolItemInstance(id: number): Promise {
- await knex("ToolItemInstances").delete().where({id});
+ await knex("ToolItemInstances").delete().where({ id });
return true;
}
@@ -89,7 +89,7 @@ export async function deleteToolItemInstance(id: number): Promise {
* @returns true
*/
export async function borrowItem(borrowerUserID: number, id: number): Promise {
- await knex("ToolItemInstances").update({borrowerUserID, borrowedAt: knex.fn.now(), status: "OUT"}).where({id});
+ await knex("ToolItemInstances").update({ borrowerUserID, borrowedAt: knex.fn.now(), status: "OUT" }).where({ id });
return true;
}
@@ -99,6 +99,6 @@ export async function borrowItem(borrowerUserID: number, id: number): Promise {
- await knex("ToolItemInstances").update({borrowerUserID: null, borrowedAt: null, status: "AVAILABLE"}).where({id});
+ await knex("ToolItemInstances").update({ borrowerUserID: null, borrowedAt: null, status: "AVAILABLE" }).where({ id });
return true;
}
\ No newline at end of file
diff --git a/server/src/repositories/Store/ToolItemTypesRepository.ts b/server/src/database/repositories/Store/ToolItemTypesRepository.ts
similarity index 96%
rename from server/src/repositories/Store/ToolItemTypesRepository.ts
rename to server/src/database/repositories/Store/ToolItemTypesRepository.ts
index 99028b564..a2732d72c 100644
--- a/server/src/repositories/Store/ToolItemTypesRepository.ts
+++ b/server/src/database/repositories/Store/ToolItemTypesRepository.ts
@@ -3,8 +3,8 @@
* DB Operations for Tool Item Types
*/
-import { knex } from "../../db/index.js";
-import { ToolItemTypesRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { ToolItemTypesRow } from "../../knex/tables.js";
/**
* Fetch all Tool Item Types
diff --git a/server/src/repositories/TextItems/TermsRepository.ts b/server/src/database/repositories/TextItems/TermsRepository.ts
similarity index 51%
rename from server/src/repositories/TextItems/TermsRepository.ts
rename to server/src/database/repositories/TextItems/TermsRepository.ts
index c252f9f92..896ab59af 100644
--- a/server/src/repositories/TextItems/TermsRepository.ts
+++ b/server/src/database/repositories/TextItems/TermsRepository.ts
@@ -3,15 +3,15 @@
* DB Operations for the Terms and Conditions text value in the TextFields table
*/
-import { knex } from "../../db/index.js";
-import { TextFieldRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { TextFieldRow } from "../../knex/tables.js";
export async function getTerms(): Promise {
- return await knex("TextFields").select().where({id: 1}).first();
+ return await knex("TextFields").select().where({ id: 1 }).first();
}
export async function setTerms(value: string): Promise {
- return await knex("TextFields").update({value}).where({id: 1});
+ return await knex("TextFields").update({ value }).where({ id: 1 });
}
diff --git a/server/src/repositories/Training/ModuleRepository.ts b/server/src/database/repositories/Training/ModuleRepository.ts
similarity index 96%
rename from server/src/repositories/Training/ModuleRepository.ts
rename to server/src/database/repositories/Training/ModuleRepository.ts
index c168531f5..697f27662 100644
--- a/server/src/repositories/Training/ModuleRepository.ts
+++ b/server/src/database/repositories/Training/ModuleRepository.ts
@@ -2,10 +2,10 @@
* DB operations endpoint for TrainingModule table
*/
-import { knex } from "../../db/index.js";
-import { TrainingModuleRow, TrainingModuleItem, ModulesForEquipmentRow, EquipmentRow } from "../../db/tables.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { PassedModule } from "../../schemas/usersSchema.js";
+import { knex } from "../../knex/index.js";
+import { TrainingModuleRow, TrainingModuleItem, ModulesForEquipmentRow, EquipmentRow } from "../../knex/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { PassedModule } from "../../../graphql/schemas/usersSchema.js";
/**
* Fetch all Training Modules in the table
@@ -50,7 +50,7 @@ export async function getModuleByID(id: number): Promise {
export async function getModuleIDsByEquipmentID(equipmentID: number): Promise[]> {
const moduleIDs = await knex("ModulesForEquipment")
.select("moduleID")
- .where(equipmentID);
+ .where({ equipmentID: equipmentID });
return moduleIDs;
}
diff --git a/server/src/repositories/Training/PassedRepository.ts b/server/src/database/repositories/Training/PassedRepository.ts
similarity index 91%
rename from server/src/repositories/Training/PassedRepository.ts
rename to server/src/database/repositories/Training/PassedRepository.ts
index 0853a4267..575fd9371 100644
--- a/server/src/repositories/Training/PassedRepository.ts
+++ b/server/src/database/repositories/Training/PassedRepository.ts
@@ -1,4 +1,4 @@
-import { knex } from "../../db/index.js";
+import { knex } from "../../knex/index.js";
export async function addPassedModule(userID: number, moduleID: number, passedDate: Date) {
@@ -18,7 +18,7 @@ export async function purgeExpiredPassedModules(): Promise {
return result.rows.length;
}
-export async function getPassedTrainingsDaysAgo(days: number): Promise<{email: string, moduleIds: number[], moduleNames: string[]}[]> {
+export async function getPassedTrainingsDaysAgo(days: number): Promise<{ email: string, moduleIds: number[], moduleNames: string[] }[]> {
const result = await knex.raw(`
select
CONCAT(u."ritUsername", '@rit.edu') as email,
diff --git a/server/src/repositories/Training/SubmissionRepository.ts b/server/src/database/repositories/Training/SubmissionRepository.ts
similarity index 88%
rename from server/src/repositories/Training/SubmissionRepository.ts
rename to server/src/database/repositories/Training/SubmissionRepository.ts
index 427fbd99f..537cbf0a7 100644
--- a/server/src/repositories/Training/SubmissionRepository.ts
+++ b/server/src/database/repositories/Training/SubmissionRepository.ts
@@ -2,10 +2,10 @@
* DB operations endpoint for ModuleSubmissions table
*/
-import { knex } from "../../db/index.js";
-import { ModuleSubmissionRow } from "../../db/tables.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import * as PassedRepo from "./PassedRepository.js";
+import { knex } from "../../knex/index.js";
+import { ModuleSubmissionRow } from "../../knex/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import * as PassedRepo from "./PassedRepository.js";
/**
* Create a Module SUbmission and append it to the table
@@ -135,7 +135,7 @@ export async function getFailedSubmissionsTodayByModuleAndUser(moduleID: number,
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0)
- return await knex("ModuleSubmissions").select().where({moduleID, makerID: userID, passed: false}).andWhere("submissionDate", ">=", today);
+ return await knex("ModuleSubmissions").select().where({ moduleID, makerID: userID, passed: false }).andWhere("submissionDate", ">=", today);
}
/**
@@ -147,8 +147,8 @@ export async function getFailedSubmissionsTodayByModuleAndUser(moduleID: number,
export async function getPassingSubmission(moduleID: number, userID: number): Promise {
var today = new Date();
const submission = await knex("ModuleSubmissions").select()
- .where({moduleID, makerID: userID, passed: true}).andWhere("submissionDate", "<=", today).andWhere("expirationDate", ">", today )
- .orderBy("submissionDate", "desc")
- .first();
+ .where({ moduleID, makerID: userID, passed: true }).andWhere("submissionDate", "<=", today).andWhere("expirationDate", ">", today)
+ .orderBy("submissionDate", "desc")
+ .first();
return submission;
}
\ No newline at end of file
diff --git a/server/src/repositories/Training/TrainingHoldsRespository.ts b/server/src/database/repositories/Training/TrainingHoldsRespository.ts
similarity index 80%
rename from server/src/repositories/Training/TrainingHoldsRespository.ts
rename to server/src/database/repositories/Training/TrainingHoldsRespository.ts
index 75ec9f840..fdb1931b6 100644
--- a/server/src/repositories/Training/TrainingHoldsRespository.ts
+++ b/server/src/database/repositories/Training/TrainingHoldsRespository.ts
@@ -3,8 +3,8 @@
* DB Operations for Training Holds
*/
-import { knex } from "../../db/index.js";
-import { TrainingHoldsRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { TrainingHoldsRow } from "../../knex/tables.js";
/**
* Fetch Training Holds
@@ -20,7 +20,7 @@ export async function getTrainingHolds(): Promise {
* @returns all matching Training Holds
*/
export async function getTrainingHoldsByUser(userID: number): Promise {
- return await knex("TrainingHolds").select().where({userID}).andWhere("expires", ">=", knex.fn.now());
+ return await knex("TrainingHolds").select().where({ userID }).andWhere("expires", ">=", knex.fn.now());
}
/**
@@ -30,7 +30,7 @@ export async function getTrainingHoldsByUser(userID: number): Promise {
- return await knex("TrainingHolds").select().where({userID, moduleID}).andWhere("expires", ">=", knex.fn.now()).first();
+ return await knex("TrainingHolds").select().where({ userID, moduleID }).andWhere("expires", ">=", knex.fn.now()).first();
}
/**
@@ -39,7 +39,7 @@ export async function getTrainingHoldByUserForModule(userID: number, moduleID: n
* @returns Training Hold or undefined if ID not exist
*/
export async function getTrainingHoldByID(id: number): Promise {
- return await knex("TrainingHolds").select().where({id}).first();
+ return await knex("TrainingHolds").select().where({ id }).first();
}
/**
@@ -52,12 +52,12 @@ export async function getTrainingHoldByID(id: number): Promise {
if (!expires) {
expires = new Date();
- expires.setDate(expires.getDate()+1);
+ expires.setDate(expires.getDate() + 1);
expires.setHours(0);
expires.setMinutes(0);
expires.setSeconds(0);
}
- await knex("TrainingHolds").insert({userID, moduleID, expires});
+ await knex("TrainingHolds").insert({ userID, moduleID, expires });
return true;
}
@@ -76,7 +76,7 @@ export async function deleteExpiredTrainingHolds(): Promise {
* @returns true
*/
export async function deleteTrainingHold(id: number): Promise {
- await knex("TrainingHolds").delete().where({id});
+ await knex("TrainingHolds").delete().where({ id });
return true;
}
diff --git a/server/src/repositories/Users/OrganizationRepository.ts b/server/src/database/repositories/Users/OrganizationRepository.ts
similarity index 96%
rename from server/src/repositories/Users/OrganizationRepository.ts
rename to server/src/database/repositories/Users/OrganizationRepository.ts
index cd5ec46a5..0c2ae6945 100644
--- a/server/src/repositories/Users/OrganizationRepository.ts
+++ b/server/src/database/repositories/Users/OrganizationRepository.ts
@@ -1,14 +1,14 @@
import * as CurrencyAccountRepo from "../Currency/CurrencyAccountsRepository.js"
-import { knex } from "../../db/index.js";
+import { knex } from "../../knex/index.js";
import { GraphQLError } from "graphql";
-import { OrganizationsRow } from "../../db/tables.js";
+import { OrganizationsRow } from "../../knex/tables.js";
export async function createOrganization(username: string, notes: string, displayname?: string): Promise {
// Create the account for the organization
const accountID = await CurrencyAccountRepo.createAccount();
const data = displayname ? { username: username, displayname: displayname, notes: notes } : { username: username, notes: notes };
-
+
try {
var orgID = await knex("Organizations").insert({ ...data, accountID: accountID }).returning("*");
diff --git a/server/src/repositories/Users/SessionRepository.ts b/server/src/database/repositories/Users/SessionRepository.ts
similarity index 81%
rename from server/src/repositories/Users/SessionRepository.ts
rename to server/src/database/repositories/Users/SessionRepository.ts
index 3e6b013ca..a45f6b691 100644
--- a/server/src/repositories/Users/SessionRepository.ts
+++ b/server/src/database/repositories/Users/SessionRepository.ts
@@ -1,5 +1,5 @@
-import { knex } from "../../db/index.js";
-import { ExpressSessionRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { ExpressSessionRow } from "../../knex/tables.js";
export async function getSession(sid: string): Promise {
diff --git a/server/src/repositories/Users/TempCardRepository.ts b/server/src/database/repositories/Users/TempCardRepository.ts
similarity index 91%
rename from server/src/repositories/Users/TempCardRepository.ts
rename to server/src/database/repositories/Users/TempCardRepository.ts
index df382c47b..3f9c9af6f 100644
--- a/server/src/repositories/Users/TempCardRepository.ts
+++ b/server/src/database/repositories/Users/TempCardRepository.ts
@@ -1,6 +1,6 @@
import { GraphQLError } from "graphql";
-import { knex } from "../../db/index.js";
-import { TempCardRow, UserRow } from "../../db/tables.js";
+import { knex } from "../../knex/index.js";
+import { TempCardRow, UserRow } from "../../knex/tables.js";
export async function IssueCard(userID: number, cardTagID: string): Promise {
return await knex("TemporaryCards").insert({ userID: userID, cardTagID: cardTagID });
diff --git a/server/src/repositories/Users/UserRepository.ts b/server/src/database/repositories/Users/UserRepository.ts
similarity index 98%
rename from server/src/repositories/Users/UserRepository.ts
rename to server/src/database/repositories/Users/UserRepository.ts
index d2aa1b36c..dc756fe0f 100644
--- a/server/src/repositories/Users/UserRepository.ts
+++ b/server/src/database/repositories/Users/UserRepository.ts
@@ -2,10 +2,10 @@
* DB operations endpoint for Users table
*/
-import { knex } from "../../db/index.js";
+import { knex } from "../../knex/index.js";
import { createUnassocaitedAuditLog } from "../AuditLogs/AuditLogRepository.js";
-import { EntityNotFound } from "../../EntityNotFound.js";
-import { UserRow } from "../../db/tables.js";
+import { EntityNotFound } from "../../../EntityNotFound.js";
+import { UserRow } from "../../knex/tables.js";
import * as CurrencyAccountRepo from "../../repositories/Currency/CurrencyAccountsRepository.js";
import * as TempCardRepo from "./TempCardRepository.js";
diff --git a/server/src/repositories/tempRolesRepo.ts b/server/src/database/repositories/tempRolesRepo.ts
similarity index 73%
rename from server/src/repositories/tempRolesRepo.ts
rename to server/src/database/repositories/tempRolesRepo.ts
index dcf0dc886..9110d94bb 100644
--- a/server/src/repositories/tempRolesRepo.ts
+++ b/server/src/database/repositories/tempRolesRepo.ts
@@ -1,4 +1,4 @@
-import { knex } from "../db/index.js";
+import { knex } from "../knex/index.js";
diff --git a/server/src/resolvers/accessChecksResolver.ts b/server/src/graphql/resolvers/accessChecksResolver.ts
similarity index 91%
rename from server/src/resolvers/accessChecksResolver.ts
rename to server/src/graphql/resolvers/accessChecksResolver.ts
index 668264794..ba59fdc6f 100644
--- a/server/src/resolvers/accessChecksResolver.ts
+++ b/server/src/graphql/resolvers/accessChecksResolver.ts
@@ -3,15 +3,15 @@
* GraphQL Endpoint Implementations for Access Checks
*/
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as RoomRepo from "../repositories/Rooms/RoomRepository.js";
-import { ApolloContext } from "../context.js";
-import { accessCheckExists, createAccessCheck, getAccessCheckByID, getAccessChecks, getAccessChecksByApproved, getAccessChecksByUserID, purgeUnapprovedAccessChecks, setAccessCheckApproval } from "../repositories/Equipment/AccessChecksRepository.js";
-import { createAuditLog, createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getUserByID, getUsersFullName } from "../repositories/Users/UserRepository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
+import { ApolloContext } from "../../context.js";
+import { accessCheckExists, createAccessCheck, getAccessCheckByID, getAccessChecks, getAccessChecksByApproved, getAccessChecksByUserID, purgeUnapprovedAccessChecks, setAccessCheckApproval } from "../../database/repositories/Equipment/AccessChecksRepository.js";
+import { createAuditLog, createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getUserByID, getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
import { GraphQLError } from "graphql";
-import { AccessCheckRow } from "../db/tables.js";
-import { Equipment } from "../models/equipment/Equipment.js";
+import { AccessCheckRow } from "../../database/knex/tables.js";
+import { Equipment } from "../../database/models/equipment/Equipment.js";
const AccessChecksResolver = {
AccessCheck: {
diff --git a/server/src/resolvers/announcementsResolver.ts b/server/src/graphql/resolvers/announcementsResolver.ts
similarity index 83%
rename from server/src/resolvers/announcementsResolver.ts
rename to server/src/graphql/resolvers/announcementsResolver.ts
index d6edf0de7..f9d5afa29 100644
--- a/server/src/resolvers/announcementsResolver.ts
+++ b/server/src/graphql/resolvers/announcementsResolver.ts
@@ -3,8 +3,8 @@
* GraphQL Endpoint Implementations for Announcements
*/
-import { ApolloContext } from "../context.js";
-import { getAnnouncements, getAnnouncementByID, createAnnouncement, updateAnnouncement, deleteAnnouncement } from "../repositories/Announcements/AnnouncementsRepository.js";
+import { ApolloContext } from "../../context.js";
+import { getAnnouncements, getAnnouncementByID, createAnnouncement, updateAnnouncement, deleteAnnouncement } from "../../database/repositories/Announcements/AnnouncementsRepository.js";
const AnnouncementsResolver = {
@@ -17,9 +17,9 @@ const AnnouncementsResolver = {
getAllAnnouncements: async (
_parent: any,
_args: any,
- ) => {
- return await getAnnouncements();
- },
+ ) => {
+ return await getAnnouncements();
+ },
/**
* Fetch Announcement by ID
@@ -47,7 +47,7 @@ const AnnouncementsResolver = {
*/
createAnnouncement: async (
_parent: any,
- args: {title: string, description: string, linkText: string, linkUrl: string},
+ args: { title: string, description: string, linkText: string, linkUrl: string },
{ isAdmin }: ApolloContext) =>
isAdmin(async () => {
return await createAnnouncement(args);
@@ -65,7 +65,7 @@ const AnnouncementsResolver = {
*/
updateAnnouncement: async (
_parent: any,
- args: {id: number, title: string, description: string, linkText: string, linkUrl: string},
+ args: { id: number, title: string, description: string, linkText: string, linkUrl: string },
{ isAdmin }: ApolloContext) =>
isAdmin(async () => {
return await updateAnnouncement(args);
@@ -79,7 +79,7 @@ const AnnouncementsResolver = {
*/
deleteAnnouncement: async (
_parent: any,
- args: {id: number},
+ args: { id: number },
{ isAdmin }: ApolloContext) =>
isAdmin(async () => {
return await deleteAnnouncement(args.id);
diff --git a/server/src/resolvers/auditLogsResolver.ts b/server/src/graphql/resolvers/auditLogsResolver.ts
similarity index 91%
rename from server/src/resolvers/auditLogsResolver.ts
rename to server/src/graphql/resolvers/auditLogsResolver.ts
index f0d7d8497..5d9dfcb81 100644
--- a/server/src/resolvers/auditLogsResolver.ts
+++ b/server/src/graphql/resolvers/auditLogsResolver.ts
@@ -3,8 +3,8 @@
* GraphQL Endpoint Implementations for Audit Logs
*/
-import * as AuditLogRepo from "../repositories/AuditLogs/AuditLogRepository.js";
-import { ApolloContext } from "../context.js";
+import * as AuditLogRepo from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { ApolloContext } from "../../context.js";
const AuditLogResolvers = {
Query: {
diff --git a/server/src/resolvers/cartResolver.ts b/server/src/graphql/resolvers/cartResolver.ts
similarity index 91%
rename from server/src/resolvers/cartResolver.ts
rename to server/src/graphql/resolvers/cartResolver.ts
index ba058ff66..f9ddff5bd 100644
--- a/server/src/resolvers/cartResolver.ts
+++ b/server/src/graphql/resolvers/cartResolver.ts
@@ -1,10 +1,10 @@
import { GraphQLError } from "graphql";
-import { ApolloContext } from "../context.js";
-import { InventoryCartsRow } from "../db/tables.js";
-import { clearItemsFromCart, deleteInventoryCart, getInventoryCartByID, getInventoryCarts, getInventoryCartsByMakerspace, getItemsInCart, subtractItemFromCart } from "../repositories/Store/InventoryCartsRepository.js";
-import { addItemsAmounts, getItemById } from "../repositories/Store/InventoryRepository.js";
-import { getUserByID } from "../repositories/Users/UserRepository.js";
-import { getMakerspaceByID } from "../repositories/Makerspaces/MakerspaceRespository.js";
+import { ApolloContext } from "../../context.js";
+import { InventoryCartsRow } from "../../database/knex/tables.js";
+import { clearItemsFromCart, deleteInventoryCart, getInventoryCartByID, getInventoryCarts, getInventoryCartsByMakerspace, getItemsInCart, subtractItemFromCart } from "../../database/repositories/Store/InventoryCartsRepository.js";
+import { addItemsAmounts, getItemById } from "../../database/repositories/Store/InventoryRepository.js";
+import { getUserByID } from "../../database/repositories/Users/UserRepository.js";
+import { getMakerspaceByID } from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
export const CartResolver = {
InventoryCart: {
diff --git a/server/src/resolvers/currencyAccountResolver.ts b/server/src/graphql/resolvers/currencyAccountResolver.ts
similarity index 83%
rename from server/src/resolvers/currencyAccountResolver.ts
rename to server/src/graphql/resolvers/currencyAccountResolver.ts
index cd075bfce..5db9f8cc9 100644
--- a/server/src/resolvers/currencyAccountResolver.ts
+++ b/server/src/graphql/resolvers/currencyAccountResolver.ts
@@ -1,7 +1,7 @@
-import { ApolloContext } from "../context.js";
-import { CurrencyAccountsRow } from "../db/tables.js";
-import { send_cc_balance_change_email } from "../integrations/email/email.js";
-import * as CurrencyAccountRepo from "../repositories/Currency/CurrencyAccountsRepository.js"
+import { ApolloContext } from "../../context.js";
+import { CurrencyAccountsRow } from "../../database/knex/tables.js";
+import { send_cc_balance_change_email } from "../../integrations/email/email.js";
+import * as CurrencyAccountRepo from "../../database/repositories/Currency/CurrencyAccountsRepository.js"
export const CurrencyAccountResolvers = {
CurrencyAccount: {
diff --git a/server/src/resolvers/currencyLedgerResolver.ts b/server/src/graphql/resolvers/currencyLedgerResolver.ts
similarity index 69%
rename from server/src/resolvers/currencyLedgerResolver.ts
rename to server/src/graphql/resolvers/currencyLedgerResolver.ts
index d83a08c50..48a7406ef 100644
--- a/server/src/resolvers/currencyLedgerResolver.ts
+++ b/server/src/graphql/resolvers/currencyLedgerResolver.ts
@@ -1,5 +1,5 @@
-import { ApolloContext } from "../context.js"
-import * as CurrencyLedgerRepo from "../repositories/Currency/CurrencyLedgerRepository.js"
+import { ApolloContext } from "../../context.js"
+import * as CurrencyLedgerRepo from "../../database/repositories/Currency/CurrencyLedgerRepository.js"
export const CurrencyLedgerResolvers = {
diff --git a/server/src/resolvers/customUrlResolver.ts b/server/src/graphql/resolvers/customUrlResolver.ts
similarity index 88%
rename from server/src/resolvers/customUrlResolver.ts
rename to server/src/graphql/resolvers/customUrlResolver.ts
index c29fb7b48..63247dd90 100644
--- a/server/src/resolvers/customUrlResolver.ts
+++ b/server/src/graphql/resolvers/customUrlResolver.ts
@@ -1,5 +1,5 @@
-import { ApolloContext } from "../context.js";
-import { createCustomUrl, deleteCustomUrl, getCustomUrl, getCustomUrlById, getCustomUrls, updateCustomUrl } from "../repositories/Links/customUrlRepository.js";
+import { ApolloContext } from "../../context.js";
+import { createCustomUrl, deleteCustomUrl, getCustomUrl, getCustomUrlById, getCustomUrls, updateCustomUrl } from "../../database/repositories/Links/customUrlRepository.js";
import { CustomUrlInput } from "../schemas/customUrlSchema.js";
const CustomUrlResolver = {
@@ -32,7 +32,7 @@ const CustomUrlResolver = {
args: { shortUrl: string, longUrl: string },
{ isAdmin }: ApolloContext) =>
isAdmin(async () => {
- const res = await createCustomUrl(args.shortUrl, args.longUrl);
+ const res = await createCustomUrl(args.shortUrl, args.longUrl);
return res;
}),
diff --git a/server/src/resolvers/dataPointResolver.ts b/server/src/graphql/resolvers/dataPointResolver.ts
similarity index 93%
rename from server/src/resolvers/dataPointResolver.ts
rename to server/src/graphql/resolvers/dataPointResolver.ts
index f6afc412d..f07e90fcc 100644
--- a/server/src/resolvers/dataPointResolver.ts
+++ b/server/src/graphql/resolvers/dataPointResolver.ts
@@ -3,8 +3,8 @@
* GraphQL Endpoint Implementations for Data Points (misc integer data)
*/
-import { ApolloContext } from "../context.js";
-import { getDataPointByID, incrementDataPointValue, setDataPointValue } from "../repositories/DataPoints/DataPointsRepository.js";
+import { ApolloContext } from "../../context.js";
+import { getDataPointByID, incrementDataPointValue, setDataPointValue } from "../../database/repositories/DataPoints/DataPointsRepository.js";
const DataPointsResolver = {
Query: {
diff --git a/server/src/resolvers/deviceResolver.ts b/server/src/graphql/resolvers/deviceResolver.ts
similarity index 90%
rename from server/src/resolvers/deviceResolver.ts
rename to server/src/graphql/resolvers/deviceResolver.ts
index 62c692a9e..65149468e 100644
--- a/server/src/resolvers/deviceResolver.ts
+++ b/server/src/graphql/resolvers/deviceResolver.ts
@@ -1,18 +1,18 @@
-import { ApolloContext } from "../context.js";
-import { AccessControllerRow, AccessControllerState, CoreRow, DispenserRow } from "../db/tables.js";
-import * as DeviceRepo from "../repositories/Devices/DeviceRepository.js";
-import * as ACRepo from "../repositories/Devices/AccessControllerRepository.js";
-import * as InstanceRepo from "../repositories/Equipment/EquipmentInstancesRepository.js";
-import * as UserRepo from "../repositories/Users/UserRepository.js";
-import * as CoreRepo from "../repositories/Devices/CoreRepository.js";
-import * as DispenserRepo from "../repositories/Devices/DispenserRepository.js";
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as AuditLogRepo from "../repositories/AuditLogs/AuditLogRepository.js";
-import { WSACSServerUnprompted } from "../models/api/WSACS/WSACSFormats.js";
-import { EntityNotFound } from "../EntityNotFound.js";
-import WSACSController from "../models/api/WSACS/WSACSController.js";
-import { ACSOrchestrator } from "../models/api/ACSOrchestrator.js";
-import { CoreActions, CoreFlags } from "../models/api/ACSFormats.js";
+import { ApolloContext } from "../../context.js";
+import { AccessControllerRow, AccessControllerState, CoreRow, DispenserRow } from "../../database/knex/tables.js";
+import * as DeviceRepo from "../../database/repositories/Devices/DeviceRepository.js";
+import * as ACRepo from "../../database/repositories/Devices/AccessControllerRepository.js";
+import * as InstanceRepo from "../../database/repositories/Equipment/EquipmentInstancesRepository.js";
+import * as UserRepo from "../../database/repositories/Users/UserRepository.js";
+import * as CoreRepo from "../../database/repositories/Devices/CoreRepository.js";
+import * as DispenserRepo from "../../database/repositories/Devices/DispenserRepository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as AuditLogRepo from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { WSACSServerUnprompted } from "../../database/models/api/WSACS/WSACSFormats.js";
+import { EntityNotFound } from "../../EntityNotFound.js";
+import WSACSController from "../../database/models/api/WSACS/WSACSController.js";
+import { ACSOrchestrator } from "../../database/models/api/ACSOrchestrator.js";
+import { CoreActions, CoreFlags } from "../../database/models/api/ACSFormats.js";
import { GraphQLError } from "graphql";
const DeviceResolver = {
diff --git a/server/src/resolvers/equipmentInstanceResolver.ts b/server/src/graphql/resolvers/equipmentInstanceResolver.ts
similarity index 91%
rename from server/src/resolvers/equipmentInstanceResolver.ts
rename to server/src/graphql/resolvers/equipmentInstanceResolver.ts
index b3872bda9..73c51e273 100644
--- a/server/src/resolvers/equipmentInstanceResolver.ts
+++ b/server/src/graphql/resolvers/equipmentInstanceResolver.ts
@@ -1,13 +1,13 @@
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as InstanceRepo from "../repositories/Equipment/EquipmentInstancesRepository.js";
-import * as RoomRepo from "../repositories/Rooms/RoomRepository.js";
-import * as ACRepo from "../repositories/Devices/AccessControllerRepository.js";
-import { ApolloContext } from "../context.js";
-import { EquipmentInstancesRow } from "../db/tables.js";
-import { createInstance, deleteInstance, getInstanceByID, getInstancesByEquipment, setInstanceName, setInstanceStatus } from "../repositories/Equipment/EquipmentInstancesRepository.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as InstanceRepo from "../../database/repositories/Equipment/EquipmentInstancesRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
+import * as ACRepo from "../../database/repositories/Devices/AccessControllerRepository.js";
+import { ApolloContext } from "../../context.js";
+import { EquipmentInstancesRow } from "../../database/knex/tables.js";
+import { createInstance, deleteInstance, getInstanceByID, getInstancesByEquipment, setInstanceName, setInstanceStatus } from "../../database/repositories/Equipment/EquipmentInstancesRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
import { GraphQLError } from "graphql";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
const EquipmentInstanceResolver = {
EquipmentInstance: {
diff --git a/server/src/resolvers/equipmentResolver.ts b/server/src/graphql/resolvers/equipmentResolver.ts
similarity index 90%
rename from server/src/resolvers/equipmentResolver.ts
rename to server/src/graphql/resolvers/equipmentResolver.ts
index 461d783a2..561801898 100644
--- a/server/src/resolvers/equipmentResolver.ts
+++ b/server/src/graphql/resolvers/equipmentResolver.ts
@@ -3,16 +3,16 @@
* GraphQL Endpoint Implementations for Equipment
*/
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as EquipmentInstanceRepo from "../repositories/Equipment/EquipmentInstancesRepository.js";
-import * as RoomRepo from "../repositories/Rooms/RoomRepository.js";
-import * as ModuleRepo from "../repositories/Training/ModuleRepository.js"
-import { ApolloContext, CurrentUser } from "../context.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
-import { AccessControllerState, EquipmentRow } from "../db/tables.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as EquipmentInstanceRepo from "../../database/repositories/Equipment/EquipmentInstancesRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
+import * as ModuleRepo from "../../database/repositories/Training/ModuleRepository.js"
+import { ApolloContext, CurrentUser } from "../../context.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
+import { AccessControllerState, EquipmentRow } from "../../database/knex/tables.js";
import { EquipmentInput } from "../schemas/equipmentSchema.js";
-import * as ACRepo from "../repositories/Devices/AccessControllerRepository.js";
+import * as ACRepo from "../../database/repositories/Devices/AccessControllerRepository.js";
import { GraphQLError } from "graphql";
diff --git a/server/src/resolvers/equipmentSessionsResolver.ts b/server/src/graphql/resolvers/equipmentSessionsResolver.ts
similarity index 79%
rename from server/src/resolvers/equipmentSessionsResolver.ts
rename to server/src/graphql/resolvers/equipmentSessionsResolver.ts
index 7fb030b12..833ab6071 100644
--- a/server/src/resolvers/equipmentSessionsResolver.ts
+++ b/server/src/graphql/resolvers/equipmentSessionsResolver.ts
@@ -3,12 +3,12 @@
* GraphQL endpoint implementations for EquipmentSessions
*/
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import { ApolloContext, CurrentUser } from "../context.js";
-import { getUserByID } from "../repositories/Users/UserRepository.js";
-import { getEquipmentSessions } from "../repositories/Equipment/EquipmentSessionsRepository.js";
-import { getRoomByID } from "../repositories/Rooms/RoomRepository.js";
-import { getMakerspaceByID } from "../repositories/Makerspaces/MakerspaceRespository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import { ApolloContext, CurrentUser } from "../../context.js";
+import { getUserByID } from "../../database/repositories/Users/UserRepository.js";
+import { getEquipmentSessions } from "../../database/repositories/Equipment/EquipmentSessionsRepository.js";
+import { getRoomByID } from "../../database/repositories/Rooms/RoomRepository.js";
+import { getMakerspaceByID } from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
const EquipmentSessionsResolver = {
EquipmentSession: {
diff --git a/server/src/resolvers/eventsResolver.ts b/server/src/graphql/resolvers/eventsResolver.ts
similarity index 100%
rename from server/src/resolvers/eventsResolver.ts
rename to server/src/graphql/resolvers/eventsResolver.ts
diff --git a/server/src/resolvers/holdsResolver.ts b/server/src/graphql/resolvers/holdsResolver.ts
similarity index 81%
rename from server/src/resolvers/holdsResolver.ts
rename to server/src/graphql/resolvers/holdsResolver.ts
index 91f5ee9d9..24a3f7bd9 100644
--- a/server/src/resolvers/holdsResolver.ts
+++ b/server/src/graphql/resolvers/holdsResolver.ts
@@ -1,10 +1,10 @@
-import { ApolloContext, CurrentUser } from "../context.js";
-import * as HoldsRepo from "../repositories/Holds/HoldsRepository.js";
-import * as UsersRepo from "../repositories/Users/UserRepository.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
-import { HoldRow } from "../db/tables.js";
-import { send_hold_placed_email } from "../integrations/email/email.js";
+import { ApolloContext, CurrentUser } from "../../context.js";
+import * as HoldsRepo from "../../database/repositories/Holds/HoldsRepository.js";
+import * as UsersRepo from "../../database/repositories/Users/UserRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
+import { HoldRow } from "../../database/knex/tables.js";
+import { send_hold_placed_email } from "../../integrations/email/email.js";
const HoldsResolvers = {
Hold: {
diff --git a/server/src/resolvers/maintenanceTicketResolver.ts b/server/src/graphql/resolvers/maintenanceTicketResolver.ts
similarity index 87%
rename from server/src/resolvers/maintenanceTicketResolver.ts
rename to server/src/graphql/resolvers/maintenanceTicketResolver.ts
index b1eea9390..94f246d3d 100644
--- a/server/src/resolvers/maintenanceTicketResolver.ts
+++ b/server/src/graphql/resolvers/maintenanceTicketResolver.ts
@@ -1,12 +1,12 @@
-import { ApolloContext } from "../context.js"
-import { MaintenanceTicketRow, MaintenanceTicketSeverity, MaintenanceTicketStatus, MaintenanceTicketType } from "../db/tables.js"
-import * as MaintenanceTicketRepo from "../repositories/Equipment/MaintenanceTicketRepository.js"
-import * as InstanceRepo from "../repositories/Equipment/EquipmentInstancesRepository.js"
-import * as UserRepo from "../repositories/Users/UserRepository.js"
-import * as AuditLogRepo from "../repositories/AuditLogs/AuditLogRepository.js"
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import { notifyNewMaintenanceTicket } from "../integrations/slack/slack.js"
-import { Equipment } from "../models/equipment/Equipment.js"
+import { ApolloContext } from "../../context.js"
+import { MaintenanceTicketRow, MaintenanceTicketSeverity, MaintenanceTicketStatus, MaintenanceTicketType } from "../../database/knex/tables.js"
+import * as MaintenanceTicketRepo from "../../database/repositories/Equipment/MaintenanceTicketRepository.js"
+import * as InstanceRepo from "../../database/repositories/Equipment/EquipmentInstancesRepository.js"
+import * as UserRepo from "../../database/repositories/Users/UserRepository.js"
+import * as AuditLogRepo from "../../database/repositories/AuditLogs/AuditLogRepository.js"
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import { notifyNewMaintenanceTicket } from "../../integrations/slack/slack.js"
+import { Equipment } from "../../database/models/equipment/Equipment.js"
const MaintenanceTicketResolver = {
MaintenanceTicket: {
diff --git a/server/src/resolvers/makerspaceHoursResolver.ts b/server/src/graphql/resolvers/makerspaceHoursResolver.ts
similarity index 89%
rename from server/src/resolvers/makerspaceHoursResolver.ts
rename to server/src/graphql/resolvers/makerspaceHoursResolver.ts
index d9dbe2345..9a9f55605 100644
--- a/server/src/resolvers/makerspaceHoursResolver.ts
+++ b/server/src/graphql/resolvers/makerspaceHoursResolver.ts
@@ -1,6 +1,6 @@
-import { ApolloContext } from "../context.js";
-import * as HoursRepo from "../repositories/Makerspaces/MakerspaceHoursRepository.js";
-import { DefaultHoursRow, SpecialHoursRow } from "../db/tables.js";
+import { ApolloContext } from "../../context.js";
+import * as HoursRepo from "../../database/repositories/Makerspaces/MakerspaceHoursRepository.js";
+import { DefaultHoursRow, SpecialHoursRow } from "../../database/knex/tables.js";
const MakerspaceHoursResolver = {
diff --git a/server/src/resolvers/makerspaceResolver.ts b/server/src/graphql/resolvers/makerspaceResolver.ts
similarity index 83%
rename from server/src/resolvers/makerspaceResolver.ts
rename to server/src/graphql/resolvers/makerspaceResolver.ts
index 8cc5aaaab..2ea16f29a 100644
--- a/server/src/resolvers/makerspaceResolver.ts
+++ b/server/src/graphql/resolvers/makerspaceResolver.ts
@@ -1,15 +1,15 @@
-import { ApolloContext } from "../context.js";
-import { addTrainingToMakerspace, archiveMakerspace, createMakerspace, deleteMakerspace, getMakerspaceByID, getMakerspaces, getTrainingsByMakerspace, getValidStaff, removeTrainingFromMakerspace, updateMakerspace } from "../repositories/Makerspaces/MakerspaceRespository.js";
-import { MakerspaceRow } from "../db/tables.js";
-import { getRoomsByMakerspace } from "../repositories/Rooms/RoomRepository.js";
+import { ApolloContext } from "../../context.js";
+import { addTrainingToMakerspace, archiveMakerspace, createMakerspace, deleteMakerspace, getMakerspaceByID, getMakerspaces, getTrainingsByMakerspace, getValidStaff, removeTrainingFromMakerspace, updateMakerspace } from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
+import { MakerspaceRow } from "../../database/knex/tables.js";
+import { getRoomsByMakerspace } from "../../database/repositories/Rooms/RoomRepository.js";
import { MakerspaceInput } from "../schemas/makerspacesSchema.js";
-import * as HoursRepo from "../repositories/Makerspaces/MakerspaceHoursRepository.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
-import { getItems, getItemsWhereStorefront } from "../repositories/Store/InventoryRepository.js";
-import * as DeviceRepo from "../repositories/Devices/DeviceRepository.js";
-import * as CoreRepo from "../repositories/Devices/CoreRepository.js";
-import * as DispenserRepo from "../repositories/Devices/DispenserRepository.js";
+import * as HoursRepo from "../../database/repositories/Makerspaces/MakerspaceHoursRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
+import { getItems, getItemsWhereStorefront } from "../../database/repositories/Store/InventoryRepository.js";
+import * as DeviceRepo from "../../database/repositories/Devices/DeviceRepository.js";
+import * as CoreRepo from "../../database/repositories/Devices/CoreRepository.js";
+import * as DispenserRepo from "../../database/repositories/Devices/DispenserRepository.js";
const MakerspacesResolver = {
Makerspace: {
diff --git a/server/src/resolvers/organizationsResolver.ts b/server/src/graphql/resolvers/organizationsResolver.ts
similarity index 82%
rename from server/src/resolvers/organizationsResolver.ts
rename to server/src/graphql/resolvers/organizationsResolver.ts
index 1b6f67a9f..23a791125 100644
--- a/server/src/resolvers/organizationsResolver.ts
+++ b/server/src/graphql/resolvers/organizationsResolver.ts
@@ -1,9 +1,9 @@
-import { ApolloContext } from "../context.js";
-import { OrganizationsRow } from "../db/tables.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import * as OrgRepo from "../repositories/Users/OrganizationRepository.js";
-import * as CurrencyAccountRepo from "../repositories/Currency/CurrencyAccountsRepository.js"
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
+import { ApolloContext } from "../../context.js";
+import { OrganizationsRow } from "../../database/knex/tables.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import * as OrgRepo from "../../database/repositories/Users/OrganizationRepository.js";
+import * as CurrencyAccountRepo from "../../database/repositories/Currency/CurrencyAccountsRepository.js"
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
export const OrganizationResolver = {
diff --git a/server/src/resolvers/permissionResolver.ts b/server/src/graphql/resolvers/permissionResolver.ts
similarity index 89%
rename from server/src/resolvers/permissionResolver.ts
rename to server/src/graphql/resolvers/permissionResolver.ts
index 689ac8290..d33bf9a0f 100644
--- a/server/src/resolvers/permissionResolver.ts
+++ b/server/src/graphql/resolvers/permissionResolver.ts
@@ -3,7 +3,7 @@
* GraphQL endpoint implmenentations for Permissions
*/
-import { ApolloContext, CurrentUser } from "../context.js";
+import { ApolloContext, CurrentUser } from "../../context.js";
const PermissionResolver = {
Query: {
diff --git a/server/src/resolvers/reservationResolver.ts b/server/src/graphql/resolvers/reservationResolver.ts
similarity index 86%
rename from server/src/resolvers/reservationResolver.ts
rename to server/src/graphql/resolvers/reservationResolver.ts
index 85cccecfb..1b1a30425 100644
--- a/server/src/resolvers/reservationResolver.ts
+++ b/server/src/graphql/resolvers/reservationResolver.ts
@@ -1,12 +1,12 @@
-import { ApolloContext } from "../context.js"
-import { ReservationRow } from "../db/tables.js";
-import * as ReservationRepo from "../repositories/Equipment/ReservationRepository.js"
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as UserRepo from "../repositories/Users/UserRepository.js";
-import * as RoomRepo from "../repositories/Rooms/RoomRepository.js";
-import * as AccessCheckRepo from "../repositories/Equipment/AccessChecksRepository.js"
+import { ApolloContext } from "../../context.js"
+import { ReservationRow } from "../../database/knex/tables.js";
+import * as ReservationRepo from "../../database/repositories/Equipment/ReservationRepository.js"
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as UserRepo from "../../database/repositories/Users/UserRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
+import * as AccessCheckRepo from "../../database/repositories/Equipment/AccessChecksRepository.js"
import { GraphQLError } from "graphql";
-import { notifyReservationRequest } from "../integrations/slack/slack.js";
+import { notifyReservationRequest } from "../../integrations/slack/slack.js";
const ReservationResolver = {
Reservation: {
diff --git a/server/src/resolvers/restrictionResolver.ts b/server/src/graphql/resolvers/restrictionResolver.ts
similarity index 77%
rename from server/src/resolvers/restrictionResolver.ts
rename to server/src/graphql/resolvers/restrictionResolver.ts
index 6f10c3d56..a2535b8e9 100644
--- a/server/src/resolvers/restrictionResolver.ts
+++ b/server/src/graphql/resolvers/restrictionResolver.ts
@@ -1,8 +1,8 @@
-import { ApolloContext, CurrentUser } from "../context.js";
-import { RestrictionRow } from "../db/tables.js";
-import * as UsersRepo from "../repositories/Users/UserRepository.js";
-import * as RestrictionRepository from "../repositories/Restrictions/RestrictionsRepository.js";
-import * as MakerspaceRepo from "../repositories/Makerspaces/MakerspaceRespository.js";
+import { ApolloContext, CurrentUser } from "../../context.js";
+import { RestrictionRow } from "../../database/knex/tables.js";
+import * as UsersRepo from "../../database/repositories/Users/UserRepository.js";
+import * as RestrictionRepository from "../../database/repositories/Restrictions/RestrictionsRepository.js";
+import * as MakerspaceRepo from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
export const RestrictionResolver = {
Restriction: {
diff --git a/server/src/resolvers/roomsResolver.ts b/server/src/graphql/resolvers/roomsResolver.ts
similarity index 90%
rename from server/src/resolvers/roomsResolver.ts
rename to server/src/graphql/resolvers/roomsResolver.ts
index a7f29ac41..8d60ef8f6 100644
--- a/server/src/resolvers/roomsResolver.ts
+++ b/server/src/graphql/resolvers/roomsResolver.ts
@@ -1,12 +1,12 @@
-import * as RoomRepo from "../repositories/Rooms/RoomRepository.js";
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as UserRepo from "../repositories/Users/UserRepository.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as UserRepo from "../../database/repositories/Users/UserRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
import assert from "assert";
-import { Room } from "../models/rooms/room.js";
-import { ApolloContext, CurrentUser } from "../context.js";
-import * as MakerspaceRepo from "../repositories/Makerspaces/MakerspaceRespository.js";
+import { Room } from "../../database/models/rooms/room.js";
+import { ApolloContext, CurrentUser } from "../../context.js";
+import * as MakerspaceRepo from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
import { GraphQLError } from "graphql";
const RoomResolvers = {
diff --git a/server/src/resolvers/storeFrontResolver.ts b/server/src/graphql/resolvers/storeFrontResolver.ts
similarity index 96%
rename from server/src/resolvers/storeFrontResolver.ts
rename to server/src/graphql/resolvers/storeFrontResolver.ts
index 088b262b1..547b3eefc 100644
--- a/server/src/resolvers/storeFrontResolver.ts
+++ b/server/src/graphql/resolvers/storeFrontResolver.ts
@@ -1,13 +1,13 @@
-import { ApolloContext } from "../context.js";
-import * as InventoryRepo from "../repositories/Store/InventoryRepository.js";
+import { ApolloContext } from "../../context.js";
+import * as InventoryRepo from "../../database/repositories/Store/InventoryRepository.js";
import { InventoryItemInput } from "../schemas/storeFrontSchema.js";
-import { deleteInventoryItem } from "../repositories/Store/InventoryRepository.js";
-import { createLedger, deleteLedger, getLedgers } from "../repositories/Store/InventoryLedgerRepository.js";
+import { deleteInventoryItem } from "../../database/repositories/Store/InventoryRepository.js";
+import { createLedger, deleteLedger, getLedgers } from "../../database/repositories/Store/InventoryLedgerRepository.js";
import { GraphQLError } from "graphql";
-import { getUserByID, getUserByIDOrUndefined } from "../repositories/Users/UserRepository.js";
-import { notifyInventoryItemBelowThreshold } from "../integrations/slack/slack.js";
-import { InventoryItemRow, InventoryLedgerRow } from "../db/tables.js";
-import { getMakerspaceByID } from "../repositories/Makerspaces/MakerspaceRespository.js";
+import { getUserByID, getUserByIDOrUndefined } from "../../database/repositories/Users/UserRepository.js";
+import { notifyInventoryItemBelowThreshold } from "../../integrations/slack/slack.js";
+import { InventoryItemRow, InventoryLedgerRow } from "../../database/knex/tables.js";
+import { getMakerspaceByID } from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
const StorefrontResolvers = {
InventoryItem: {
diff --git a/server/src/resolvers/termsResolver.ts b/server/src/graphql/resolvers/termsResolver.ts
similarity index 72%
rename from server/src/resolvers/termsResolver.ts
rename to server/src/graphql/resolvers/termsResolver.ts
index 27a564da7..ea4fccce8 100644
--- a/server/src/resolvers/termsResolver.ts
+++ b/server/src/graphql/resolvers/termsResolver.ts
@@ -3,15 +3,15 @@
* GraphQL Endpoint Implementations for the Terms value of the TextFields table
*/
-import { ApolloContext } from "../context.js";
-import { getTerms, setTerms } from "../repositories/TextItems/TermsRepository.js";
+import { ApolloContext } from "../../context.js";
+import { getTerms, setTerms } from "../../database/repositories/TextItems/TermsRepository.js";
const TermsResolver = {
Query: {
getTerms: async (
_parent: any,
_args: any) =>
- (await getTerms())?.value
+ (await getTerms())?.value
},
Mutation: {
diff --git a/server/src/resolvers/themeResolver.ts b/server/src/graphql/resolvers/themeResolver.ts
similarity index 90%
rename from server/src/resolvers/themeResolver.ts
rename to server/src/graphql/resolvers/themeResolver.ts
index 88db9ce09..06c28c7d9 100644
--- a/server/src/resolvers/themeResolver.ts
+++ b/server/src/graphql/resolvers/themeResolver.ts
@@ -1,6 +1,6 @@
-import { ApolloContext } from "../context.js";
-import { ThemeRow } from "../db/tables.js";
-import * as ThemeRepo from "../repositories/SiteSettings/ThemesRepository.js";
+import { ApolloContext } from "../../context.js";
+import { ThemeRow } from "../../database/knex/tables.js";
+import * as ThemeRepo from "../../database/repositories/SiteSettings/ThemesRepository.js";
const ThemeResolver = {
Theme: {
diff --git a/server/src/resolvers/toolItemResolver.ts b/server/src/graphql/resolvers/toolItemResolver.ts
similarity index 95%
rename from server/src/resolvers/toolItemResolver.ts
rename to server/src/graphql/resolvers/toolItemResolver.ts
index 8b3fa1051..13c93bbd3 100644
--- a/server/src/resolvers/toolItemResolver.ts
+++ b/server/src/graphql/resolvers/toolItemResolver.ts
@@ -3,16 +3,16 @@
* GraphQL Endpoint Implementations for ToolItemInstances and ToolItemTypes
*/
-import { ApolloContext } from "../context.js";
-import { ToolItemInstancesRow, ToolItemTypesRow } from "../db/tables.js";
-import { borrowItem, createToolItemInstance, deleteToolItemInstance, getToolItemInstanceByID, getToolItemInstances, getToolItemInstancesByBorrower, getToolItemInstancesByType, returnItem, updateToolItemInstance } from "../repositories/Store/ToolItemInstancesRepository.js";
-import { createToolItemType, deleteToolItemType, getToolItemTypeByID, getToolItemTypes, getToolItemTypesWhereAllowCheckout, updateToolItemType } from "../repositories/Store/ToolItemTypesRepository.js";
-import { getUserByID, getUsersFullName } from "../repositories/Users/UserRepository.js";
+import { ApolloContext } from "../../context.js";
+import { ToolItemInstancesRow, ToolItemTypesRow } from "../../database/knex/tables.js";
+import { borrowItem, createToolItemInstance, deleteToolItemInstance, getToolItemInstanceByID, getToolItemInstances, getToolItemInstancesByBorrower, getToolItemInstancesByType, returnItem, updateToolItemInstance } from "../../database/repositories/Store/ToolItemInstancesRepository.js";
+import { createToolItemType, deleteToolItemType, getToolItemTypeByID, getToolItemTypes, getToolItemTypesWhereAllowCheckout, updateToolItemType } from "../../database/repositories/Store/ToolItemTypesRepository.js";
+import { getUserByID, getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
import { ToolItemInstanceInput, ToolItemTypeInput } from "../schemas/toolItemsSchema.js";
-import { getRoomByID } from "../repositories/Rooms/RoomRepository.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
+import { getRoomByID } from "../../database/repositories/Rooms/RoomRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
import { GraphQLError } from "graphql";
-import { notifyToolItemMarked } from "../integrations/slack/slack.js";
+import { notifyToolItemMarked } from "../../integrations/slack/slack.js";
const ToolItemResolver = {
ToolItemType: {
diff --git a/server/src/resolvers/trainingHoldResolver.ts b/server/src/graphql/resolvers/trainingHoldResolver.ts
similarity index 75%
rename from server/src/resolvers/trainingHoldResolver.ts
rename to server/src/graphql/resolvers/trainingHoldResolver.ts
index 1a3e8c291..43946bd34 100644
--- a/server/src/resolvers/trainingHoldResolver.ts
+++ b/server/src/graphql/resolvers/trainingHoldResolver.ts
@@ -3,12 +3,12 @@
* GraphQL Endpoint Implementations for TrainingHolds
*/
-import { ApolloContext } from "../context.js";
-import { TrainingHoldsRow } from "../db/tables.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getModuleByID } from "../repositories/Training/ModuleRepository.js";
-import { deleteTrainingHold, getTrainingHoldByID } from "../repositories/Training/TrainingHoldsRespository.js";
-import { getUserByID, getUsersFullName } from "../repositories/Users/UserRepository.js";
+import { ApolloContext } from "../../context.js";
+import { TrainingHoldsRow } from "../../database/knex/tables.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getModuleByID } from "../../database/repositories/Training/ModuleRepository.js";
+import { deleteTrainingHold, getTrainingHoldByID } from "../../database/repositories/Training/TrainingHoldsRespository.js";
+import { getUserByID, getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
export const TrainingHoldResolver = {
TrainingHold: {
diff --git a/server/src/resolvers/trainingModuleResolver.ts b/server/src/graphql/resolvers/trainingModuleResolver.ts
similarity index 95%
rename from server/src/resolvers/trainingModuleResolver.ts
rename to server/src/graphql/resolvers/trainingModuleResolver.ts
index bb3c186bd..b22566e0c 100644
--- a/server/src/resolvers/trainingModuleResolver.ts
+++ b/server/src/graphql/resolvers/trainingModuleResolver.ts
@@ -3,18 +3,18 @@
* GraphQL Endpoint Implementations for TrainingModules, and executions for submitting to modules
*/
-import * as ModuleRepo from "../repositories/Training/ModuleRepository.js";
+import * as ModuleRepo from "../../database/repositories/Training/ModuleRepository.js";
import { AccessProgress, AnswerInput } from "../schemas/trainingModuleSchema.js";
-import { ApolloContext } from "../context.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
-import * as SubmissionRepo from "../repositories/Training/SubmissionRepository.js";
-import { MODULE_PASSING_THRESHOLD } from "../constants.js";
-import { TrainingModuleItem, TrainingModuleRow } from "../db/tables.js";
-import { accessCheckExists, createAccessCheck, hasApprovedAccessCheck } from "../repositories/Equipment/AccessChecksRepository.js";
-import { createTrainingHold, getTrainingHoldByUserForModule } from "../repositories/Training/TrainingHoldsRespository.js";
-import * as PassedModuleRepo from "../repositories/Training/PassedRepository.js";
-import * as TrainingModuleReo from "../repositories/Training/ModuleRepository.js";
+import { ApolloContext } from "../../context.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
+import * as SubmissionRepo from "../../database/repositories/Training/SubmissionRepository.js";
+import { MODULE_PASSING_THRESHOLD } from "../../constants.js";
+import { TrainingModuleItem, TrainingModuleRow } from "../../database/knex/tables.js";
+import { accessCheckExists, createAccessCheck, hasApprovedAccessCheck } from "../../database/repositories/Equipment/AccessChecksRepository.js";
+import { createTrainingHold, getTrainingHoldByUserForModule } from "../../database/repositories/Training/TrainingHoldsRespository.js";
+import * as PassedModuleRepo from "../../database/repositories/Training/PassedRepository.js";
+import * as TrainingModuleReo from "../../database/repositories/Training/ModuleRepository.js";
import { GraphQLError } from "graphql";
/**
diff --git a/server/src/resolvers/trainingSubmissionResolver.ts b/server/src/graphql/resolvers/trainingSubmissionResolver.ts
similarity index 95%
rename from server/src/resolvers/trainingSubmissionResolver.ts
rename to server/src/graphql/resolvers/trainingSubmissionResolver.ts
index eaaa0cd54..d986cdf01 100644
--- a/server/src/resolvers/trainingSubmissionResolver.ts
+++ b/server/src/graphql/resolvers/trainingSubmissionResolver.ts
@@ -3,8 +3,8 @@
* GraphQL Endpoint Implementations for ModuleSubmissions
*/
-import * as SubmissionRepo from "../repositories/Training/SubmissionRepository.js";
-import { ApolloContext } from "../context.js";
+import * as SubmissionRepo from "../../database/repositories/Training/SubmissionRepository.js";
+import { ApolloContext } from "../../context.js";
const TrainingSubmissionResolvers = {
Query: {
diff --git a/server/src/resolvers/usersResolver.ts b/server/src/graphql/resolvers/usersResolver.ts
similarity index 91%
rename from server/src/resolvers/usersResolver.ts
rename to server/src/graphql/resolvers/usersResolver.ts
index 07f5642ea..4fbe34e04 100644
--- a/server/src/resolvers/usersResolver.ts
+++ b/server/src/graphql/resolvers/usersResolver.ts
@@ -1,18 +1,18 @@
-import * as UserRepo from "../repositories/Users/UserRepository.js";
-import * as ModuleRepo from "../repositories/Training/ModuleRepository.js";
-import * as HoldsRepo from "../repositories/Holds/HoldsRepository.js";
-import * as AccessCheckRepo from "../repositories/Equipment/AccessChecksRepository.js";
-import * as EquipmentRepo from "../repositories/Equipment/EquipmentRepository.js";
-import * as RoomRepo from "../repositories/Rooms/RoomRepository.js";
-import * as RestrictionRepo from "../repositories/Restrictions/RestrictionsRepository.js";
-import * as CurrencyAccountRepo from "../repositories/Currency/CurrencyAccountsRepository.js";
-import { createUnassocaitedAuditLog } from "../repositories/AuditLogs/AuditLogRepository.js";
-import { ApolloContext, CurrentUser } from "../context.js";
-import { getUsersFullName } from "../repositories/Users/UserRepository.js";
-import { getActiveTrainingHoldsByUser } from "../repositories/Training/TrainingHoldsRespository.js";
-import { getMakerspaceByID } from "../repositories/Makerspaces/MakerspaceRespository.js";
-import { EntityNotFound } from "../EntityNotFound.js";
-import { UserRow } from "../db/tables.js";
+import * as UserRepo from "../../database/repositories/Users/UserRepository.js";
+import * as ModuleRepo from "../../database/repositories/Training/ModuleRepository.js";
+import * as HoldsRepo from "../../database/repositories/Holds/HoldsRepository.js";
+import * as AccessCheckRepo from "../../database/repositories/Equipment/AccessChecksRepository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
+import * as RestrictionRepo from "../../database/repositories/Restrictions/RestrictionsRepository.js";
+import * as CurrencyAccountRepo from "../../database/repositories/Currency/CurrencyAccountsRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
+import { ApolloContext, CurrentUser } from "../../context.js";
+import { getUsersFullName } from "../../database/repositories/Users/UserRepository.js";
+import { getActiveTrainingHoldsByUser } from "../../database/repositories/Training/TrainingHoldsRespository.js";
+import { getMakerspaceByID } from "../../database/repositories/Makerspaces/MakerspaceRespository.js";
+import { EntityNotFound } from "../../EntityNotFound.js";
+import { UserRow } from "../../database/knex/tables.js";
const UsersResolvers = {
User: {
diff --git a/server/src/schema.ts b/server/src/graphql/schema.ts
similarity index 100%
rename from server/src/schema.ts
rename to server/src/graphql/schema.ts
diff --git a/server/src/schemas/TermsSchema.ts b/server/src/graphql/schemas/TermsSchema.ts
similarity index 100%
rename from server/src/schemas/TermsSchema.ts
rename to server/src/graphql/schemas/TermsSchema.ts
diff --git a/server/src/schemas/accessChecksSchema.ts b/server/src/graphql/schemas/accessChecksSchema.ts
similarity index 100%
rename from server/src/schemas/accessChecksSchema.ts
rename to server/src/graphql/schemas/accessChecksSchema.ts
diff --git a/server/src/schemas/announcementsSchema.ts b/server/src/graphql/schemas/announcementsSchema.ts
similarity index 100%
rename from server/src/schemas/announcementsSchema.ts
rename to server/src/graphql/schemas/announcementsSchema.ts
diff --git a/server/src/schemas/auditLogsSchema.ts b/server/src/graphql/schemas/auditLogsSchema.ts
similarity index 100%
rename from server/src/schemas/auditLogsSchema.ts
rename to server/src/graphql/schemas/auditLogsSchema.ts
diff --git a/server/src/schemas/calendarEventsSchema.ts b/server/src/graphql/schemas/calendarEventsSchema.ts
similarity index 100%
rename from server/src/schemas/calendarEventsSchema.ts
rename to server/src/graphql/schemas/calendarEventsSchema.ts
diff --git a/server/src/schemas/cartSchema.ts b/server/src/graphql/schemas/cartSchema.ts
similarity index 100%
rename from server/src/schemas/cartSchema.ts
rename to server/src/graphql/schemas/cartSchema.ts
diff --git a/server/src/schemas/currencyAccountSchema.ts b/server/src/graphql/schemas/currencyAccountSchema.ts
similarity index 100%
rename from server/src/schemas/currencyAccountSchema.ts
rename to server/src/graphql/schemas/currencyAccountSchema.ts
diff --git a/server/src/schemas/currencyLedgerSchema.ts b/server/src/graphql/schemas/currencyLedgerSchema.ts
similarity index 100%
rename from server/src/schemas/currencyLedgerSchema.ts
rename to server/src/graphql/schemas/currencyLedgerSchema.ts
diff --git a/server/src/schemas/customUrlSchema.ts b/server/src/graphql/schemas/customUrlSchema.ts
similarity index 100%
rename from server/src/schemas/customUrlSchema.ts
rename to server/src/graphql/schemas/customUrlSchema.ts
diff --git a/server/src/schemas/dataPointsSchema.ts b/server/src/graphql/schemas/dataPointsSchema.ts
similarity index 100%
rename from server/src/schemas/dataPointsSchema.ts
rename to server/src/graphql/schemas/dataPointsSchema.ts
diff --git a/server/src/schemas/deviceSchema.ts b/server/src/graphql/schemas/deviceSchema.ts
similarity index 100%
rename from server/src/schemas/deviceSchema.ts
rename to server/src/graphql/schemas/deviceSchema.ts
diff --git a/server/src/schemas/equipmentInstanceSchema.ts b/server/src/graphql/schemas/equipmentInstanceSchema.ts
similarity index 100%
rename from server/src/schemas/equipmentInstanceSchema.ts
rename to server/src/graphql/schemas/equipmentInstanceSchema.ts
diff --git a/server/src/schemas/equipmentSchema.ts b/server/src/graphql/schemas/equipmentSchema.ts
similarity index 100%
rename from server/src/schemas/equipmentSchema.ts
rename to server/src/graphql/schemas/equipmentSchema.ts
diff --git a/server/src/schemas/equipmentSessionsSchema.ts b/server/src/graphql/schemas/equipmentSessionsSchema.ts
similarity index 100%
rename from server/src/schemas/equipmentSessionsSchema.ts
rename to server/src/graphql/schemas/equipmentSessionsSchema.ts
diff --git a/server/src/schemas/eventsSchema.ts b/server/src/graphql/schemas/eventsSchema.ts
similarity index 100%
rename from server/src/schemas/eventsSchema.ts
rename to server/src/graphql/schemas/eventsSchema.ts
diff --git a/server/src/schemas/holdsSchema.ts b/server/src/graphql/schemas/holdsSchema.ts
similarity index 100%
rename from server/src/schemas/holdsSchema.ts
rename to server/src/graphql/schemas/holdsSchema.ts
diff --git a/server/src/schemas/maintenanceTicketSchema.ts b/server/src/graphql/schemas/maintenanceTicketSchema.ts
similarity index 100%
rename from server/src/schemas/maintenanceTicketSchema.ts
rename to server/src/graphql/schemas/maintenanceTicketSchema.ts
diff --git a/server/src/schemas/makerspaceHoursSchema.ts b/server/src/graphql/schemas/makerspaceHoursSchema.ts
similarity index 100%
rename from server/src/schemas/makerspaceHoursSchema.ts
rename to server/src/graphql/schemas/makerspaceHoursSchema.ts
diff --git a/server/src/schemas/makerspacesSchema.ts b/server/src/graphql/schemas/makerspacesSchema.ts
similarity index 100%
rename from server/src/schemas/makerspacesSchema.ts
rename to server/src/graphql/schemas/makerspacesSchema.ts
diff --git a/server/src/schemas/organizationsSchema.ts b/server/src/graphql/schemas/organizationsSchema.ts
similarity index 100%
rename from server/src/schemas/organizationsSchema.ts
rename to server/src/graphql/schemas/organizationsSchema.ts
diff --git a/server/src/schemas/permissionSchema.ts b/server/src/graphql/schemas/permissionSchema.ts
similarity index 100%
rename from server/src/schemas/permissionSchema.ts
rename to server/src/graphql/schemas/permissionSchema.ts
diff --git a/server/src/schemas/reservationSchema.ts b/server/src/graphql/schemas/reservationSchema.ts
similarity index 100%
rename from server/src/schemas/reservationSchema.ts
rename to server/src/graphql/schemas/reservationSchema.ts
diff --git a/server/src/schemas/restrictionSchema.ts b/server/src/graphql/schemas/restrictionSchema.ts
similarity index 100%
rename from server/src/schemas/restrictionSchema.ts
rename to server/src/graphql/schemas/restrictionSchema.ts
diff --git a/server/src/schemas/roomsSchema.ts b/server/src/graphql/schemas/roomsSchema.ts
similarity index 100%
rename from server/src/schemas/roomsSchema.ts
rename to server/src/graphql/schemas/roomsSchema.ts
diff --git a/server/src/schemas/storeFrontSchema.ts b/server/src/graphql/schemas/storeFrontSchema.ts
similarity index 100%
rename from server/src/schemas/storeFrontSchema.ts
rename to server/src/graphql/schemas/storeFrontSchema.ts
diff --git a/server/src/schemas/themeSchema.ts b/server/src/graphql/schemas/themeSchema.ts
similarity index 100%
rename from server/src/schemas/themeSchema.ts
rename to server/src/graphql/schemas/themeSchema.ts
diff --git a/server/src/schemas/toolItemsSchema.ts b/server/src/graphql/schemas/toolItemsSchema.ts
similarity index 100%
rename from server/src/schemas/toolItemsSchema.ts
rename to server/src/graphql/schemas/toolItemsSchema.ts
diff --git a/server/src/schemas/trainingHoldsSchema.ts b/server/src/graphql/schemas/trainingHoldsSchema.ts
similarity index 100%
rename from server/src/schemas/trainingHoldsSchema.ts
rename to server/src/graphql/schemas/trainingHoldsSchema.ts
diff --git a/server/src/schemas/trainingModuleSchema.ts b/server/src/graphql/schemas/trainingModuleSchema.ts
similarity index 96%
rename from server/src/schemas/trainingModuleSchema.ts
rename to server/src/graphql/schemas/trainingModuleSchema.ts
index a98803d98..3d6784684 100644
--- a/server/src/schemas/trainingModuleSchema.ts
+++ b/server/src/graphql/schemas/trainingModuleSchema.ts
@@ -4,7 +4,7 @@
*/
import { gql } from "graphql-tag";
-import { EquipmentRow, TrainingModuleRow } from "../db/tables.js";
+import { EquipmentRow, TrainingModuleRow } from "../../database/knex/tables.js";
export interface TrainingModule { //dead
id: number;
diff --git a/server/src/schemas/trainingSubmissionSchema.ts b/server/src/graphql/schemas/trainingSubmissionSchema.ts
similarity index 100%
rename from server/src/schemas/trainingSubmissionSchema.ts
rename to server/src/graphql/schemas/trainingSubmissionSchema.ts
diff --git a/server/src/schemas/usersSchema.ts b/server/src/graphql/schemas/usersSchema.ts
similarity index 98%
rename from server/src/schemas/usersSchema.ts
rename to server/src/graphql/schemas/usersSchema.ts
index 41d417612..e10222c1a 100644
--- a/server/src/schemas/usersSchema.ts
+++ b/server/src/graphql/schemas/usersSchema.ts
@@ -4,8 +4,7 @@
*/
import { gql } from "graphql-tag";
-import { UserRow } from "../db/tables.js";
-
+import { UserRow } from "../../database/knex/tables.js";
export interface PassedModule {
moduleID: number;
diff --git a/server/src/integrations/atrium-integration b/server/src/integrations/atrium-integration
index c8a046156..89f3b8f57 160000
--- a/server/src/integrations/atrium-integration
+++ b/server/src/integrations/atrium-integration
@@ -1 +1 @@
-Subproject commit c8a0461567628889bab317bd06eea55510600699
+Subproject commit 89f3b8f57ea0859eba8ab2de0b3424f9c5943563
diff --git a/server/src/integrations/currency/currency.ts b/server/src/integrations/currency/currency.ts
index 83b7ac038..4dd225e09 100644
--- a/server/src/integrations/currency/currency.ts
+++ b/server/src/integrations/currency/currency.ts
@@ -1,8 +1,8 @@
import * as Atrium from "../atrium-integration/atrium.js"
-import * as CurrencyAccountRepo from "../../repositories/Currency/CurrencyAccountsRepository.js"
+import * as CurrencyAccountRepo from "../../database/repositories/Currency/CurrencyAccountsRepository.js"
import { CurrencySource, MakeMoneyError } from "./types.js";
-import { TransactionRow } from "../../db/tables.js";
-import { getCurrencyLedgerEntry } from "../../repositories/Currency/CurrencyLedgerRepository.js";
+import { TransactionRow } from "../../database/knex/tables.js";
+import { getCurrencyLedgerEntry } from "../../database/repositories/Currency/CurrencyLedgerRepository.js";
const USE_ATRIUM_FOR_CURRENCY = process.env.ATRIUM_ENABLED == "true";
diff --git a/server/src/integrations/currency/transactions.ts b/server/src/integrations/currency/transactions.ts
index 9de5a321c..c002e4757 100644
--- a/server/src/integrations/currency/transactions.ts
+++ b/server/src/integrations/currency/transactions.ts
@@ -4,7 +4,7 @@
*/
import { CurrencySource, MakeMoneyError } from "./types.js"
-import * as TransactionRepo from "../../repositories/Currency/TransactionRepository.js"
+import * as TransactionRepo from "../../database/repositories/Currency/TransactionRepository.js"
import * as Currency from "./currency.js"
import { send_transaction_email } from "../email/email.js";
@@ -82,7 +82,7 @@ export async function UpdateTransaction(transactionID: number, deltaCents: numbe
// If we have charged the user money last time, this will be negative
// If it is positive, we have somehow paid them
const deltaForThisTransaction = (lastCharges.atrium?.amount ?? 0) + (lastCharges.credit?.amount ?? 0)
- if (centsToCharge + deltaForThisTransaction > 0){
+ if (centsToCharge + deltaForThisTransaction > 0) {
// recharge would give the user money (something fishy)
console.error(`Currency: Caught fraudulent refund before refund. Not gonna refund it. Probably needs manual rectification. tid: ${transactionID} asking for ${centsToCharge}, only ever spent ${-deltaForThisTransaction}`)
return false;
@@ -95,7 +95,7 @@ export async function UpdateTransaction(transactionID: number, deltaCents: numbe
// update amount to charge based on how much was already refunded/spent
centsToCharge = deltaForThisTransaction + centsToCharge;
}
- if (centsToCharge > 0){
+ if (centsToCharge > 0) {
console.error(`Currency: Illegal attempt to refund more than spent: tid:${transactionID}, tried to adjust ${centsToCharge} with reason ${reason}`)
return false;
}
@@ -106,7 +106,7 @@ export async function UpdateTransaction(transactionID: number, deltaCents: numbe
console.error(`Currency: Could not charge account tid: ${parent.id}, teid: ${entryId}, err: ${chargeResult} `);
return chargeResult;
}
- if (!chargeResult){
+ if (!chargeResult) {
return false;
}
diff --git a/server/src/integrations/email/receipt-template.ts b/server/src/integrations/email/receipt-template.ts
index f43b2debd..a2e23b73c 100644
--- a/server/src/integrations/email/receipt-template.ts
+++ b/server/src/integrations/email/receipt-template.ts
@@ -1,9 +1,9 @@
import ejs from "ejs"
import { centsToDollarString } from "../currency/currency.js"
-import { TransactionEntryRow, TransactionRow } from "../../db/tables.js"
-import { getCurrencyLedgerEntriesForTransactionEntryByEntryId, getTransactionById, getTransactionEntriesByTransactionId } from "../../repositories/Currency/TransactionRepository.js"
+import { TransactionEntryRow, TransactionRow } from "../../database/knex/tables.js"
+import { getCurrencyLedgerEntriesForTransactionEntryByEntryId, getTransactionById, getTransactionEntriesByTransactionId } from "../../database/repositories/Currency/TransactionRepository.js"
import { CurrencyType } from "../currency/types.js"
-import { getAccountBalanceCents, getAccountOwner } from "../../repositories/Currency/CurrencyAccountsRepository.js"
+import { getAccountBalanceCents, getAccountOwner } from "../../database/repositories/Currency/CurrencyAccountsRepository.js"
const templateSource: string = `
diff --git a/server/src/integrations/papercut/papercut.ts b/server/src/integrations/papercut/papercut.ts
index ecff540a9..e1fa13254 100644
--- a/server/src/integrations/papercut/papercut.ts
+++ b/server/src/integrations/papercut/papercut.ts
@@ -1,12 +1,12 @@
import express from "express";
import xmlparser from "express-xml-bodyparser";
import * as xml2js from "xml2js"
-import { createUnassocaitedAuditLog } from "../../repositories/AuditLogs/AuditLogRepository.js";
+import { createUnassocaitedAuditLog } from "../../database/repositories/AuditLogs/AuditLogRepository.js";
import * as Currency from "../currency/currency.js"
import { NewTransaction, UpdateTransaction } from "../currency/transactions.js";
-import { getAccountIDByUsername } from "../../repositories/Currency/CurrencyAccountsRepository.js";
+import { getAccountIDByUsername } from "../../database/repositories/Currency/CurrencyAccountsRepository.js";
import { CurrencySource, MakeMoneyError } from "../currency/types.js";
-import { getTransactionByPrinterJobId } from "../../repositories/Currency/TransactionRepository.js";
+import { getTransactionByPrinterJobId } from "../../database/repositories/Currency/TransactionRepository.js";
const PAPERCUT_SECURITY_SECRET = process.env.PAPERCUT_SECURITY_SECRET;
const FREE_3D_PRINTS = process.env.FREE_3D_PRINTS === "true";
diff --git a/server/src/integrations/slack/slack.ts b/server/src/integrations/slack/slack.ts
index 711dff0d6..34a645ebf 100644
--- a/server/src/integrations/slack/slack.ts
+++ b/server/src/integrations/slack/slack.ts
@@ -1,8 +1,8 @@
import { ChatPostMessageArguments, WebClient } from "@slack/web-api";
-import { EquipmentRow, MaintenanceTicketRow, MakerspaceRow, ReservationRow, UserRow } from "../../db/tables.js";
-import * as EquipmentInstanceRepo from "../../repositories/Equipment/EquipmentInstancesRepository.js";
-import * as EquipmentRepo from "../../repositories/Equipment/EquipmentRepository.js";
-import * as RoomRepo from "../../repositories/Rooms/RoomRepository.js";
+import { EquipmentRow, MaintenanceTicketRow, MakerspaceRow, ReservationRow, UserRow } from "../../database/knex/tables.js";
+import * as EquipmentInstanceRepo from "../../database/repositories/Equipment/EquipmentInstancesRepository.js";
+import * as EquipmentRepo from "../../database/repositories/Equipment/EquipmentRepository.js";
+import * as RoomRepo from "../../database/repositories/Rooms/RoomRepository.js";
import { format } from "date-fns";
// Read a token from the environment variables
diff --git a/server/src/periodicActions.ts b/server/src/periodicActions.ts
index ffb54f227..9ea901f12 100644
--- a/server/src/periodicActions.ts
+++ b/server/src/periodicActions.ts
@@ -1,11 +1,11 @@
-import { knex } from "./db/index.js";
+import { knex } from "./database/knex/index.js";
import { listObjects } from "./integrations/aws/s3.js"
import { send_generic_email } from "./integrations/email/email.js";
import { notifyNewMaintenanceTicket } from "./integrations/slack/slack.js";
-import { CoreActions } from "./models/api/ACSFormats.js";
-import { ACSOrchestrator } from "./models/api/ACSOrchestrator.js";
-import { createUnassocaitedAuditLog } from "./repositories/AuditLogs/AuditLogRepository.js";
-import { advanceIntervalTickets } from "./repositories/Equipment/MaintenanceTicketRepository.js";
+import { CoreActions } from "./database/models/api/ACSFormats.js";
+import { ACSOrchestrator } from "./database/models/api/ACSOrchestrator.js";
+import { createUnassocaitedAuditLog } from "./database/repositories/AuditLogs/AuditLogRepository.js";
+import { advanceIntervalTickets } from "./database/repositories/Equipment/MaintenanceTicketRepository.js";
/**
* If you use the CDN to store user-uploads, make sure you update this query so it knows that those images are in use
diff --git a/server/src/repositories/Links/customUrlRepository.ts b/server/src/repositories/Links/customUrlRepository.ts
deleted file mode 100644
index 56c96f276..000000000
--- a/server/src/repositories/Links/customUrlRepository.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { knex } from "../../db/index.js";
-import { CustomUrlRow } from "../../db/tables.js";
-import { CustomUrlInput } from "../../schemas/customUrlSchema.js";
-
-export async function getCustomUrl(shortUrl: string): Promise {
- return await knex('CustomUrls').select('*').where({ shortUrl }).first();
-}
-
-export async function getCustomUrls() {
- return await knex('CustomUrls').select('*').orderBy("id", "asc");
-}
-
-export async function getCustomUrlById(id:number): Promise {
- return await knex('CustomUrls').select('*').where({id}).first();
-}
-
-export async function createCustomUrl(shortUrl: string, longUrl: string): Promise {
- const customUrlRow = (await knex('CustomUrls').insert({shortUrl, longUrl}).returning('*'))[0];
- return customUrlRow
-}
-
-export async function updateCustomUrl(id: number, customUrl: CustomUrlInput): Promise {
- await knex('CustomUrls').where('id', id).update({shortUrl: customUrl.shortUrl, longUrl: customUrl.longUrl});
- return getCustomUrlById(id);
-}
-
-export async function deleteCustomUrl(id: number) {
- return await knex('CustomUrls').delete().where({id});
-}
\ No newline at end of file
diff --git a/server/src/server.ts b/server/src/server.ts
index 715e1856b..14e8f9bf4 100644
--- a/server/src/server.ts
+++ b/server/src/server.ts
@@ -9,40 +9,40 @@ import { ApolloServer } from "@apollo/server";
import { expressMiddleware } from "@as-integrations/express5";
import compression from "compression";
import cors from "cors";
-import { schema } from "./schema.js";
+import { schema } from "./graphql/schema.js";
import { setupSessions, setupDevAuth, setupSamlAuth, setupAuth } from "./auth.js";
import context, { determineUser } from "./context.js";
import path from "path";
import * as schedule from "node-schedule";
-import { getUserByCardTagID, getUsersFullName } from "./repositories/Users/UserRepository.js";
-import { createUnassocaitedAuditLog } from "./repositories/AuditLogs/AuditLogRepository.js";
-import { getReaderCertCA } from "./repositories/Readers/ReaderRepository.js";
+import { getUserByCardTagID, getUsersFullName } from "./database/repositories/Users/UserRepository.js";
+import { createUnassocaitedAuditLog } from "./database/repositories/AuditLogs/AuditLogRepository.js";
+import { getReaderCertCA } from "./database/repositories/Readers/ReaderRepository.js";
import morgan from "morgan"; //Log provider
import { createRequire } from "module";
-import { setDataPointValue } from "./repositories/DataPoints/DataPointsRepository.js";
-import { addItemAmount, getItemById, getItems, getItemsWhereStaff, getItemsWhereStorefront, setItemAmount } from "./repositories/Store/InventoryRepository.js";
-import { createLedger } from "./repositories/Store/InventoryLedgerRepository.js";
-import { getMakerspaceHoursNextWeek } from "./repositories/Makerspaces/MakerspaceHoursRepository.js";
-import { getPassedTrainingsDaysAgo, purgeExpiredPassedModules } from "./repositories/Training/PassedRepository.js";
+import { setDataPointValue } from "./database/repositories/DataPoints/DataPointsRepository.js";
+import { addItemAmount, getItemById, getItems, getItemsWhereStaff, getItemsWhereStorefront, setItemAmount } from "./database/repositories/Store/InventoryRepository.js";
+import { createLedger } from "./database/repositories/Store/InventoryLedgerRepository.js";
+import { getMakerspaceHoursNextWeek } from "./database/repositories/Makerspaces/MakerspaceHoursRepository.js";
+import { getPassedTrainingsDaysAgo, purgeExpiredPassedModules } from "./database/repositories/Training/PassedRepository.js";
import * as Emailer from "./integrations/email/email.js"
import { pingAtrium } from "./integrations/atrium-integration/atrium.js";
import * as S3 from "./integrations/aws/s3.js"
import { isStaff } from "./privilege.js";
import { advanceTimeTickets, deletePastSpecialHours, purge_images, scheduledRestartAllCores } from "./periodicActions.js";
-import { getCustomUrl } from "./repositories/Links/customUrlRepository.js";
-import { InventoryItemRow } from "./db/tables.js";
+import { getCustomUrl } from "./database/repositories/Links/customUrlRepository.js";
+import { InventoryItemRow } from "./database/knex/tables.js";
import * as API from "./api/api.js";
-import { getDeviceBySN } from "./repositories/Devices/DeviceRepository.js";
+import { getDeviceBySN } from "./database/repositories/Devices/DeviceRepository.js";
import { authenticateDevice } from "./api/devices/deviceApi.js";
import { createWebSocketStream, WebSocketServer } from "ws";
import { createServer } from "http";
import { Aedes, AuthenticateError } from 'aedes';
-import * as DeviceRepo from "./repositories/Devices/DeviceRepository.js";
-import MQTTACSController from "./models/api/MQTTACSController.js";
+import * as DeviceRepo from "./database/repositories/Devices/DeviceRepository.js";
+import MQTTACSController from "./database/models/api/MQTTACSController.js";
import fs from "node:fs";
import { ViteDevServer } from "vite";
-import { SiteSettings } from "./models/site_settings/SiteSettings.js";
-import * as ThemeRepo from "./repositories/SiteSettings/ThemesRepository.js";
+import { SiteSettings } from "./database/models/site_settings/SiteSettings.js";
+import * as ThemeRepo from "./database/repositories/SiteSettings/ThemesRepository.js";
const require = createRequire(import.meta.url);