-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Expand file tree
/
Copy pathbackground-migrations.tsx
More file actions
109 lines (105 loc) · 3.1 KB
/
background-migrations.tsx
File metadata and controls
109 lines (105 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import Header from "@/src/components/layouts/header";
import { DataTable } from "@/src/components/table/data-table";
import { DataTableToolbar } from "@/src/components/table/data-table-toolbar";
import { type LangfuseColumnDef } from "@/src/components/table/types";
import { api } from "@/src/utils/api";
import { type BackgroundMigration } from "@langfuse/shared";
import { RetryBackgroundMigration } from "@/src/features/background-migrations/components/retry-background-migration";
import { StatusBadge } from "@/src/components/layouts/status-badge";
export default function BackgroundMigrationsTable() {
const backgroundMigrations = api.backgroundMigrations.all.useQuery();
const columns = [
{
accessorKey: "name",
id: "name",
enableColumnFilter: false,
header: "Name",
},
{
accessorKey: "script",
id: "script",
enableColumnFilter: false,
header: "Script",
},
{
accessorKey: "args",
id: "args",
enableColumnFilter: false,
header: "Args",
size: 80,
cell: (row) => JSON.stringify(row.getValue()),
},
{
id: "status",
header: "Status",
size: 80,
cell: (row) => {
const failedAt = row.row.original.failedAt;
if (failedAt) {
return <StatusBadge type={"failed"} className="capitalize" />;
}
const finishedAt = row.row.original.finishedAt;
if (finishedAt) {
return <StatusBadge type={"finished"} className="capitalize" />;
}
const workerId = row.row.original.workerId;
if (workerId) {
return <StatusBadge type={"active"} className="capitalize" />;
}
return <StatusBadge type={"queued"} className="capitalize" />;
},
},
{
accessorKey: "failedReason",
id: "failedReason",
enableColumnFilter: false,
header: "Failed Reason",
},
{
accessorKey: "state",
id: "state",
enableColumnFilter: false,
header: "State",
cell: (row) => JSON.stringify(row.getValue()),
},
{
id: "actions",
header: "Actions",
size: 65,
cell: (row) => {
const name = row.row.original.name;
const isRetryable = row.row.original.failedAt !== null;
return (
<RetryBackgroundMigration
backgroundMigrationName={name}
isRetryable={isRetryable}
/>
);
},
},
] as LangfuseColumnDef<BackgroundMigration>[];
return (
<>
<Header title="Background Migrations" />
<DataTableToolbar columns={columns} />
<DataTable
columns={columns}
data={
backgroundMigrations.isLoading
? { isLoading: true, isError: false }
: backgroundMigrations.isError
? {
isLoading: false,
isError: true,
error: backgroundMigrations.error.message,
}
: {
isLoading: false,
isError: false,
data: backgroundMigrations.data.migrations,
}
}
/>
</>
);
}