Merge branch 'dev' into libsql-migration

This commit is contained in:
Meier Lukas committed 2026-01-18 10:10:22 +01:00
commit 0e89116a52
96 files changed
+1760 -1244

No files matched your search

+3 -1
View File
@@ -1,5 +1,7 @@
import { generateOpenApiDocument } from "trpc-to-openapi";
import { API_KEY_HEADER_NAME } from "@homarr/auth/api-key";
import { appRouter } from "./root";
export const openApiDocument = (base: string) =>
@@ -11,7 +13,7 @@ export const openApiDocument = (base: string) =>
securitySchemes: {
apikey: {
type: "apiKey",
name: "ApiKey",
name: API_KEY_HEADER_NAME,
description: "API key which can be obtained in the Homarr administration dashboard",
in: "header",
},
+1
View File
@@ -22,6 +22,7 @@ export const apiKeysRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
},
},
+3
View File
@@ -155,6 +155,7 @@ export const boardRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
},
userPermissions: {
@@ -924,6 +925,7 @@ export const boardRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
},
},
@@ -1220,6 +1222,7 @@ const getFullBoardWithWhereAsync = async (db: Database, where: SQL<unknown>, use
id: true,
name: true,
image: true,
email: true,
},
},
sections: {
@@ -476,6 +476,7 @@ export const integrationRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
},
},
@@ -39,6 +39,7 @@ export const mediaRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
},
},
+2 -2
View File
@@ -1220,11 +1220,11 @@ describe("getBoardPermissions should return board permissions", () => {
expect(result.users).toEqual(
expect.arrayContaining([
{
user: { id: user1, name: null, image: null },
user: { id: user1, name: null, image: null, email: null },
permission: "view",
},
{
user: { id: user2, name: null, image: null },
user: { id: user2, name: null, image: null, email: null },
permission: "modify",
},
]),
+5 -2
View File
@@ -174,7 +174,7 @@ export const userRouter = createTRPCRouter({
// Is protected because also used in board access / integration access forms
selectable: protectedProcedure
.input(z.object({ excludeExternalProviders: z.boolean().default(false) }).optional())
.output(z.array(selectUserSchema.pick({ id: true, name: true, image: true })))
.output(z.array(selectUserSchema.pick({ id: true, name: true, image: true, email: true })))
.meta({ openapi: { method: "GET", path: "/api/users/selectable", tags: ["users"], protect: true } })
.query(({ ctx, input }) => {
return ctx.db.query.users.findMany({
@@ -182,6 +182,7 @@ export const userRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
where: input?.excludeExternalProviders ? eq(users.provider, "credentials") : undefined,
});
@@ -194,7 +195,7 @@ export const userRouter = createTRPCRouter({
limit: z.number().min(1).max(100).default(10),
}),
)
.output(z.array(selectUserSchema.pick({ id: true, name: true, image: true })))
.output(z.array(selectUserSchema.pick({ id: true, name: true, image: true, email: true })))
.meta({ openapi: { method: "POST", path: "/api/users/search", tags: ["users"], protect: true } })
.query(async ({ input, ctx }) => {
const dbUsers = await ctx.db.query.users.findMany({
@@ -202,6 +203,7 @@ export const userRouter = createTRPCRouter({
id: true,
name: true,
image: true,
email: true,
},
where: like(users.name, `%${input.query}%`),
limit: input.limit,
@@ -210,6 +212,7 @@ export const userRouter = createTRPCRouter({
id: user.id,
name: user.name ?? "",
image: user.image,
email: user.email,
}));
}),
getById: protectedProcedure