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:
@@ -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",
|
||||
|
||||
1
packages/db/queries/index.ts
Normal file
1
packages/db/queries/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from "./item";
|
||||
47
packages/db/queries/item.ts
Normal file
47
packages/db/queries/item.ts
Normal 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,
|
||||
};
|
||||
}),
|
||||
}));
|
||||
};
|
||||
Reference in New Issue
Block a user