diff --git a/app/server/api/git/repository/[canvasId].get.ts b/app/server/api/git/repository/[canvasId].get.ts index 490897a..4351fe8 100644 --- a/app/server/api/git/repository/[canvasId].get.ts +++ b/app/server/api/git/repository/[canvasId].get.ts @@ -1,5 +1,6 @@ import { requireAuth } from '~/server/utils/auth' -import { resolveRepo, ensureRepo } from '~/server/utils/giteaApi' +import { resolveRepo } from '~/server/utils/giteaApi' +import { prisma } from '~/server/utils/prisma' export default defineEventHandler(async (event) => { const user = requireAuth(event) @@ -9,9 +10,12 @@ export default defineEventHandler(async (event) => { throw createError({ statusCode: 400, message: 'Canvas ID is required' }) } - // We need to resolve the repo. For now, assume it's a personal repo. - // In a real scenario, we'd check the DB to see if it's a group canvas. - const opts = { username: user.username } + const canvas = await prisma.canvas.findUnique({ where: { id: canvasId } }) + + const opts = canvas + ? { username: user.username, groupId: canvas.groupId, isPublic: canvas.isPublic } + : { username: user.username } + const { owner, repo } = resolveRepo(opts) const config = useRuntimeConfig() diff --git a/app/server/utils/giteaApi.ts b/app/server/utils/giteaApi.ts index 83bb664..7c93dd4 100644 --- a/app/server/utils/giteaApi.ts +++ b/app/server/utils/giteaApi.ts @@ -64,9 +64,9 @@ export async function ensureRepo(owner: string, repoName: string, description = } }) return true - } catch (e) { - console.error(`Gitea ensureRepo(${owner}/${repoName}) error:`, e) - return false + } catch (e: any) { + console.error(`Gitea ensureRepo(${owner}/${repoName}) error:`, e.data || e) + throw new Error(`ensureRepo failed: ${e.message}`) } } @@ -103,9 +103,9 @@ export async function giteaPutFile(path: string, content: string, message: strin } }) return true - } catch (e) { - console.error('Gitea putFile error:', e) - return false + } catch (e: any) { + console.error('Gitea putFile error:', e.data || e) + throw new Error(`giteaPutFile failed: ${e.message}`) } }