fix: add seed script and repository check endpoint
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { requireAuth } from '~/server/utils/auth'
|
||||
import { resolveRepo, ensureRepo } from '~/server/utils/giteaApi'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = requireAuth(event)
|
||||
const canvasId = getRouterParam(event, 'canvasId')
|
||||
|
||||
if (!canvasId) {
|
||||
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 { owner, repo } = resolveRepo(opts)
|
||||
|
||||
const config = useRuntimeConfig()
|
||||
const { giteaUrl: url, giteaToken: token } = config
|
||||
|
||||
try {
|
||||
const res = await $fetch<any>(`${url}/api/v1/repos/${owner}/${repo}`, {
|
||||
headers: {
|
||||
'Authorization': `token ${token}`,
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
repository: {
|
||||
id: res.id,
|
||||
name: res.name,
|
||||
owner: res.owner.login,
|
||||
url: res.html_url,
|
||||
cloneUrl: res.clone_url,
|
||||
isPrivate: res.private,
|
||||
type: 'personal',
|
||||
ownerId: user.id,
|
||||
createdAt: res.created_at,
|
||||
updatedAt: res.updated_at
|
||||
}
|
||||
}
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 404) {
|
||||
return { success: false, repository: null, message: 'Repository not found' }
|
||||
}
|
||||
console.error('Failed to fetch repository:', error)
|
||||
throw createError({ statusCode: 500, message: 'Failed to fetch repository details from Gitea' })
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user