feat: add media requests widget (#774)

Co-authored-by: SeDemal <Tagaishi@hotmail.ch>
Co-authored-by: SeDemal <demal.sebastien@bluewin.ch>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
This commit is contained in:
Manuel
2024-08-24 15:23:16 +02:00
committed by GitHub
parent 7ec4adcb24
commit acbb834889
30 changed files with 1106 additions and 29 deletions

View File

@@ -6,7 +6,8 @@
".": "./index.ts",
"./client": "./client.ts",
"./schema/sqlite": "./schema/sqlite.ts",
"./test": "./test/index.ts"
"./test": "./test/index.ts",
"./queries": "./queries/index.ts"
},
"private": true,
"main": "./index.ts",

View File

@@ -0,0 +1 @@
export * from "./item";

View File

@@ -0,0 +1,47 @@
import type { WidgetKind } from "@homarr/definitions";
import type { Database } from "..";
import { inArray } from "..";
import type { inferSupportedIntegrations } from "../../widgets/src";
import { items } from "../schema/sqlite";
export const getItemsWithIntegrationsAsync = async <TKind extends WidgetKind>(
db: Database,
{ kinds }: { kinds: TKind[] },
) => {
const itemsForIntegration = await db.query.items.findMany({
where: inArray(items.kind, kinds),
with: {
integrations: {
with: {
integration: {
with: {
secrets: {
columns: {
kind: true,
value: true,
},
},
},
},
},
},
},
});
return itemsForIntegration.map((item) => ({
...item,
kind: item.kind as TKind,
integrations: item.integrations.map(({ integration, integrationId }) => {
const integrationWithSecrets = {
...integration,
kind: integration.kind as inferSupportedIntegrations<TKind>,
};
return {
integration: integrationWithSecrets,
integrationId,
};
}),
}));
};