api/inventory: remove 'inventory' from api entirely

This commit is contained in:
Johannes Kirschbauer
2025-07-06 20:21:58 +02:00
parent 9635fb03b7
commit d1abebf068
6 changed files with 6 additions and 56 deletions

View File

@@ -33,27 +33,6 @@ export const createModulesQuery = (
}, },
})); }));
export const tagsQuery = (uri: string | undefined) =>
useQuery<string[]>(() => ({
queryKey: [uri, "tags"],
placeholderData: [],
queryFn: async () => {
if (!uri) return [];
const response = await callApi("get_inventory", {
flake: { identifier: uri },
}).promise;
if (response.status === "error") {
console.error("Failed to fetch data");
} else {
const machines = response.data.machines || {};
const tags = Object.values(machines).flatMap((m) => m.tags || []);
return tags;
}
return [];
},
}));
export const machinesQuery = (uri: string | undefined) => export const machinesQuery = (uri: string | undefined) =>
useQuery<string[]>(() => ({ useQuery<string[]>(() => ({
queryKey: [uri, "machines"], queryKey: [uri, "machines"],
@@ -61,7 +40,7 @@ export const machinesQuery = (uri: string | undefined) =>
queryFn: async () => { queryFn: async () => {
if (!uri) return []; if (!uri) return [];
const response = await callApi("get_inventory", { const response = await callApi("list_machines", {
flake: { identifier: uri }, flake: { identifier: uri },
}).promise; }).promise;
if (response.status === "error") { if (response.status === "error") {

View File

@@ -1,5 +1,5 @@
import { BackButton } from "@/src/components/BackButton"; import { BackButton } from "@/src/components/BackButton";
import { createModulesQuery, machinesQuery, tagsQuery } from "@/src/queries"; import { createModulesQuery, machinesQuery } from "@/src/queries";
import { useParams } from "@solidjs/router"; import { useParams } from "@solidjs/router";
import { For, Match, Switch } from "solid-js"; import { For, Match, Switch } from "solid-js";
import { ModuleInfo } from "./list"; import { ModuleInfo } from "./list";
@@ -34,28 +34,11 @@ interface AddModuleProps {
const AddModule = (props: AddModuleProps) => { const AddModule = (props: AddModuleProps) => {
const { activeClanURI } = useClanContext(); const { activeClanURI } = useClanContext();
const tags = tagsQuery(activeClanURI());
const machines = machinesQuery(activeClanURI()); const machines = machinesQuery(activeClanURI());
return ( return (
<div> <div>
<div>Add to your clan</div> <div>Add to your clan</div>
<Switch fallback="loading"> <Switch fallback="loading">Removed</Switch>
<Match when={tags.data}>
{(tags) => (
<For each={Object.keys(props.data.roles)}>
{(role) => (
<>
<div class="text-neutral-600">{role}s</div>
<RoleForm
avilableTags={tags()}
availableMachines={machines.data || []}
/>
</>
)}
</For>
)}
</Match>
</Switch>
</div> </div>
); );
}; };

View File

@@ -62,7 +62,6 @@ const Details = (props: DetailsProps) => {
navigate(`/modules/add/${props.id}`); navigate(`/modules/add/${props.id}`);
// const uri = activeURI(); // const uri = activeURI();
// if (!uri) return; // if (!uri) return;
// const res = await callApi("get_inventory", { base_path: uri });
// if (res.status === "error") { // if (res.status === "error") {
// toast.error("Failed to fetch inventory"); // toast.error("Failed to fetch inventory");
// return; // return;

View File

@@ -10,14 +10,3 @@ Which is an abstraction over the inventory
Interacting with 'clan_lib.inventory' is NOT recommended and will be removed Interacting with 'clan_lib.inventory' is NOT recommended and will be removed
""" """
from clan_lib.api import API
from clan_lib.flake import Flake
from clan_lib.persist.inventory_store import InventorySnapshot, InventoryStore
@API.register
def get_inventory(flake: Flake) -> InventorySnapshot:
inventory_store = InventoryStore(flake)
inventory = inventory_store.read()
return inventory

View File

@@ -9,7 +9,7 @@ from clan_cli.secrets.secrets import (
list_secrets, list_secrets,
) )
from clan_lib import inventory from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.api import API from clan_lib.api import API
from clan_lib.dirs import specific_machine_dir from clan_lib.dirs import specific_machine_dir
from clan_lib.machines.machines import Machine from clan_lib.machines.machines import Machine
@@ -19,7 +19,7 @@ log = logging.getLogger(__name__)
@API.register @API.register
def delete_machine(machine: Machine) -> None: def delete_machine(machine: Machine) -> None:
inventory_store = inventory.InventoryStore(machine.flake) inventory_store = InventoryStore(machine.flake)
try: try:
inventory_store.delete( inventory_store.delete(
{f"machines.{machine.name}"}, {f"machines.{machine.name}"},

View File

@@ -22,7 +22,7 @@ from clan_lib.cmd import RunOpts, run
from clan_lib.dirs import specific_machine_dir from clan_lib.dirs import specific_machine_dir
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.inventory import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.machines.machines import Machine from clan_lib.machines.machines import Machine
from clan_lib.nix import nix_command from clan_lib.nix import nix_command
from clan_lib.nix_models.clan import ( from clan_lib.nix_models.clan import (