sourcebot/packages/web/src/app/repos/repositoryTable.tsx

43 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-09-11 05:38:09 +00:00
import { DataTable } from "@/components/ui/data-table";
import { columns, RepositoryColumnInfo } from "./columns";
2024-09-11 19:15:12 +00:00
import { listRepositories } from "@/lib/server/searchService";
2024-09-11 05:38:09 +00:00
import { isServiceError } from "@/lib/utils";
2024-09-11 19:15:12 +00:00
export const RepositoryTable = async () => {
const _repos = await listRepositories();
2024-09-11 05:59:17 +00:00
2024-09-11 19:15:12 +00:00
if (isServiceError(_repos)) {
return <div>Error fetching repositories</div>;
}
2024-09-11 05:38:09 +00:00
2024-09-11 19:15:12 +00:00
const repos = _repos.List.Repos.map((repo): RepositoryColumnInfo => {
return {
2024-09-11 05:38:09 +00:00
name: repo.Repository.Name,
2024-11-01 17:51:14 +00:00
branches: (repo.Repository.Branches ?? []).map((branch) => {
2024-09-11 05:38:09 +00:00
return {
name: branch.Name,
version: branch.Version,
}
}),
repoSizeBytes: repo.Stats.ContentBytes,
indexSizeBytes: repo.Stats.IndexBytes,
shardCount: repo.Stats.Shards,
lastIndexed: repo.IndexMetadata.IndexTime,
latestCommit: repo.Repository.LatestCommitDate,
indexedFiles: repo.Stats.Documents,
commitUrlTemplate: repo.Repository.CommitURLTemplate,
url: repo.Repository.URL,
2024-09-11 19:15:12 +00:00
}
}).sort((a, b) => {
return new Date(b.lastIndexed).getTime() - new Date(a.lastIndexed).getTime();
});
2024-09-11 05:38:09 +00:00
return (
<DataTable
columns={columns}
data={repos}
searchKey="name"
searchPlaceholder="Search repositories..."
/>
);
}