From 7b48039aa475b8c0b52b019f10fad66c7842d08b Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 6 Jul 2021 15:37:35 +0200 Subject: API uses shared types --- packages/server/src/api/v1/repo/branches.ts | 15 ++++++++------ packages/server/src/api/v1/repo/index.ts | 23 +++++++++++---------- packages/server/src/api/v1/repo/log.ts | 31 ++++++++++++++++------------- 3 files changed, 39 insertions(+), 30 deletions(-) (limited to 'packages/server/src/api/v1/repo') diff --git a/packages/server/src/api/v1/repo/branches.ts b/packages/server/src/api/v1/repo/branches.ts index fe962aa..b280a4a 100644 --- a/packages/server/src/api/v1/repo/branches.ts +++ b/packages/server/src/api/v1/repo/branches.ts @@ -1,6 +1,7 @@ import { FastifyInstance, FastifyPluginOptions } from "fastify"; import { Branch } from "../../../git/branch"; import { Route } from "../../../fastify_types"; +import { BranchSummary as APIBranchSummary, Branch as APIBranch } from "shared_types"; export default function(fastify: FastifyInstance, opts: FastifyPluginOptions, done: (err?: Error) => void): void { fastify.route({ @@ -11,7 +12,7 @@ export default function(fastify: FastifyInstance, opts: FastifyPluginOptions, do reply.send({ data: branches.map(branch => { - return { + return { id: branch.id, name: branch.name }; @@ -31,12 +32,14 @@ export default function(fastify: FastifyInstance, opts: FastifyPluginOptions, do return; } + const data: APIBranch = { + id: branch.id, + name: branch.name, + latest_commit: await branch.latestCommit() + }; + reply.send({ - data: { - id: branch.id, - name: branch.name, - latest_commit: await branch.latestCommit() - } + data: data }); } }); diff --git a/packages/server/src/api/v1/repo/index.ts b/packages/server/src/api/v1/repo/index.ts index 51413d6..8fc9ac1 100644 --- a/packages/server/src/api/v1/repo/index.ts +++ b/packages/server/src/api/v1/repo/index.ts @@ -8,6 +8,7 @@ import { basename } from "path"; import branches from "./branches"; import log from "./log"; import { verifyRepoName } from "../../util"; +import { Tree as APITree, Tag as APITag, TreeEntry as APITreeEntry } from "shared_types"; declare module "fastify" { interface FastifyRequest { @@ -32,7 +33,7 @@ function addHooks(fastify: FastifyInstance, opts: FastifyPluginOptions): void { } async function treeEntryMap(entry: TreeEntry) { const latest_commit = await entry.latestCommit(); - return { + return { name: basename(entry.path), type: entry.type, latest_commit: { @@ -45,7 +46,7 @@ async function treeEntryMap(entry: TreeEntry) { async function tagMap(tag: Tag) { const author = await tag.author(); - return { + return { name: tag.name, author: { name: author.name, email: author.email }, date: await tag.date() @@ -65,6 +66,9 @@ export default function(fastify: FastifyInstance, opts: FastifyPluginOptions, do const tree = await (await req.repository).tree(); const tree_path = (Object.keys(req.query).length !== 0 && req.query.path) ? req.query.path : null; + + let data: APITree; + if(tree_path) { const tree_found = await tree.find(tree_path); @@ -73,16 +77,15 @@ export default function(fastify: FastifyInstance, opts: FastifyPluginOptions, do return; } - reply.send({ - data: tree_found instanceof Blob - ? { type: "blob", content: await tree_found.content() } - : { type: "tree", content: await Promise.all(tree_found.entries().map(treeEntryMap)) } - }); - - return; + data = tree_found instanceof Blob + ? { type: "blob", content: await tree_found.content() } + : { type: "tree", content: await Promise.all(tree_found.entries().map(treeEntryMap)) }; + } + else { + data = { type: "tree", content: await Promise.all(tree.entries().map(treeEntryMap)) }; } - reply.send({ data: { type: "tree", content: await Promise.all(tree.entries().map(treeEntryMap)) } }); + reply.send({ data: data }); } }); diff --git a/packages/server/src/api/v1/repo/log.ts b/packages/server/src/api/v1/repo/log.ts index aa6fa1a..8157696 100644 --- a/packages/server/src/api/v1/repo/log.ts +++ b/packages/server/src/api/v1/repo/log.ts @@ -3,10 +3,11 @@ import { Commit } from "../../../git/commit"; import { Patch } from "../../../git/patch"; import { Route } from "../../../fastify_types"; import { verifySHA } from "../../util"; +import { LogCommit as APILogCommit, Patch as APIPatch, Commit as APICommit } from "shared_types"; async function commitMap(commit: Commit) { const stats = await commit.stats(); - return { + return { id: commit.id, author: { name: commit.author.name, @@ -21,7 +22,7 @@ async function commitMap(commit: Commit) { } async function patchMap(patch: Patch, index: number) { - return { + return { additions: patch.additions, deletions: patch.deletions, from: patch.from, @@ -57,19 +58,21 @@ export default function(fastify: FastifyInstance, opts: FastifyPluginOptions, do const stats = await commit.stats(); + const data: APICommit = { + message: commit.message, + author: { + name: commit.author.name, + email: commit.author.email + }, + date: commit.date, + insertions: stats.insertions, + deletions: stats.deletions, + files_changed: stats.files_changed, + diff: await Promise.all((await (await commit.diff()).patches()).map(patchMap)) + }; + reply.send({ - data: { - message: commit.message, - author: { - name: commit.author.name, - email: commit.author.email - }, - date: commit.date, - insertions: stats.insertions, - deletions: stats.deletions, - files_changed: stats.files_changed, - diff: await Promise.all((await (await commit.diff()).patches()).map(patchMap)) - } + data: data }); } }); -- cgit v1.2.3-18-g5258