wip: zen
This commit is contained in:
@@ -18,8 +18,9 @@ import { ModelTable } from "../src/schema/model.sql.js"
|
|||||||
|
|
||||||
// get input from command line
|
// get input from command line
|
||||||
const identifier = process.argv[2]
|
const identifier = process.argv[2]
|
||||||
|
const verbose = process.argv[process.argv.length - 1] === "-v"
|
||||||
if (!identifier) {
|
if (!identifier) {
|
||||||
console.error("Usage: bun lookup-user.ts <email|workspaceID|apiKey>")
|
console.error("Usage: bun lookup-user.ts <email|workspaceID|apiKey> [-v]")
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,93 +224,68 @@ async function printWorkspace(workspaceID: string) {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
await printTable("28-Day Usage", (tx) =>
|
if (verbose) {
|
||||||
tx
|
await printTable("28-Day Usage", (tx) =>
|
||||||
.select({
|
tx
|
||||||
date: sql<string>`DATE(${UsageTable.timeCreated})`.as("date"),
|
.select({
|
||||||
requests: sql<number>`COUNT(*)`.as("requests"),
|
date: sql<string>`DATE(${UsageTable.timeCreated})`.as("date"),
|
||||||
inputTokens: sql<number>`SUM(${UsageTable.inputTokens})`.as("input_tokens"),
|
requests: sql<number>`COUNT(*)`.as("requests"),
|
||||||
outputTokens: sql<number>`SUM(${UsageTable.outputTokens})`.as("output_tokens"),
|
inputTokens: sql<number>`SUM(${UsageTable.inputTokens})`.as("input_tokens"),
|
||||||
reasoningTokens: sql<number>`SUM(${UsageTable.reasoningTokens})`.as("reasoning_tokens"),
|
outputTokens: sql<number>`SUM(${UsageTable.outputTokens})`.as("output_tokens"),
|
||||||
cacheReadTokens: sql<number>`SUM(${UsageTable.cacheReadTokens})`.as("cache_read_tokens"),
|
reasoningTokens: sql<number>`SUM(${UsageTable.reasoningTokens})`.as("reasoning_tokens"),
|
||||||
cacheWrite5mTokens: sql<number>`SUM(${UsageTable.cacheWrite5mTokens})`.as("cache_write_5m_tokens"),
|
cacheReadTokens: sql<number>`SUM(${UsageTable.cacheReadTokens})`.as("cache_read_tokens"),
|
||||||
cacheWrite1hTokens: sql<number>`SUM(${UsageTable.cacheWrite1hTokens})`.as("cache_write_1h_tokens"),
|
cacheWrite5mTokens: sql<number>`SUM(${UsageTable.cacheWrite5mTokens})`.as("cache_write_5m_tokens"),
|
||||||
cost: sql<number>`SUM(${UsageTable.cost})`.as("cost"),
|
cacheWrite1hTokens: sql<number>`SUM(${UsageTable.cacheWrite1hTokens})`.as("cache_write_1h_tokens"),
|
||||||
})
|
cost: sql<number>`SUM(${UsageTable.cost})`.as("cost"),
|
||||||
.from(UsageTable)
|
})
|
||||||
.where(
|
.from(UsageTable)
|
||||||
and(
|
.where(
|
||||||
eq(UsageTable.workspaceID, workspace.id),
|
and(
|
||||||
sql`${UsageTable.timeCreated} >= DATE_SUB(NOW(), INTERVAL 28 DAY)`,
|
eq(UsageTable.workspaceID, workspace.id),
|
||||||
|
sql`${UsageTable.timeCreated} >= DATE_SUB(NOW(), INTERVAL 28 DAY)`,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.groupBy(sql`DATE(${UsageTable.timeCreated})`)
|
||||||
|
.orderBy(sql`DATE(${UsageTable.timeCreated}) DESC`)
|
||||||
|
.then((rows) => {
|
||||||
|
const totalCost = rows.reduce((sum, r) => sum + Number(r.cost), 0)
|
||||||
|
const mapped = rows.map((row) => ({
|
||||||
|
...row,
|
||||||
|
cost: `$${(Number(row.cost) / 100000000).toFixed(2)}`,
|
||||||
|
}))
|
||||||
|
if (mapped.length > 0) {
|
||||||
|
mapped.push({
|
||||||
|
date: "TOTAL",
|
||||||
|
requests: null as any,
|
||||||
|
inputTokens: null as any,
|
||||||
|
outputTokens: null as any,
|
||||||
|
reasoningTokens: null as any,
|
||||||
|
cacheReadTokens: null as any,
|
||||||
|
cacheWrite5mTokens: null as any,
|
||||||
|
cacheWrite1hTokens: null as any,
|
||||||
|
cost: `$${(totalCost / 100000000).toFixed(2)}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return mapped
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
await printTable("Disabled Models", (tx) =>
|
||||||
|
tx
|
||||||
|
.select({
|
||||||
|
model: ModelTable.model,
|
||||||
|
timeCreated: ModelTable.timeCreated,
|
||||||
|
})
|
||||||
|
.from(ModelTable)
|
||||||
|
.where(eq(ModelTable.workspaceID, workspace.id))
|
||||||
|
.orderBy(sql`${ModelTable.timeCreated} DESC`)
|
||||||
|
.then((rows) =>
|
||||||
|
rows.map((row) => ({
|
||||||
|
model: row.model,
|
||||||
|
timeCreated: formatDate(row.timeCreated),
|
||||||
|
})),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.groupBy(sql`DATE(${UsageTable.timeCreated})`)
|
}
|
||||||
.orderBy(sql`DATE(${UsageTable.timeCreated}) DESC`)
|
|
||||||
.then((rows) => {
|
|
||||||
const totalCost = rows.reduce((sum, r) => sum + Number(r.cost), 0)
|
|
||||||
const mapped = rows.map((row) => ({
|
|
||||||
...row,
|
|
||||||
cost: `$${(Number(row.cost) / 100000000).toFixed(2)}`,
|
|
||||||
}))
|
|
||||||
if (mapped.length > 0) {
|
|
||||||
mapped.push({
|
|
||||||
date: "TOTAL",
|
|
||||||
requests: null as any,
|
|
||||||
inputTokens: null as any,
|
|
||||||
outputTokens: null as any,
|
|
||||||
reasoningTokens: null as any,
|
|
||||||
cacheReadTokens: null as any,
|
|
||||||
cacheWrite5mTokens: null as any,
|
|
||||||
cacheWrite1hTokens: null as any,
|
|
||||||
cost: `$${(totalCost / 100000000).toFixed(2)}`,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return mapped
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
/*
|
|
||||||
await printTable("Usage", (tx) =>
|
|
||||||
tx
|
|
||||||
.select({
|
|
||||||
model: UsageTable.model,
|
|
||||||
provider: UsageTable.provider,
|
|
||||||
inputTokens: UsageTable.inputTokens,
|
|
||||||
outputTokens: UsageTable.outputTokens,
|
|
||||||
reasoningTokens: UsageTable.reasoningTokens,
|
|
||||||
cacheReadTokens: UsageTable.cacheReadTokens,
|
|
||||||
cacheWrite5mTokens: UsageTable.cacheWrite5mTokens,
|
|
||||||
cacheWrite1hTokens: UsageTable.cacheWrite1hTokens,
|
|
||||||
cost: UsageTable.cost,
|
|
||||||
timeCreated: UsageTable.timeCreated,
|
|
||||||
})
|
|
||||||
.from(UsageTable)
|
|
||||||
.where(eq(UsageTable.workspaceID, workspace.id))
|
|
||||||
.orderBy(sql`${UsageTable.timeCreated} DESC`)
|
|
||||||
.limit(10)
|
|
||||||
.then((rows) =>
|
|
||||||
rows.map((row) => ({
|
|
||||||
...row,
|
|
||||||
cost: `$${(row.cost / 100000000).toFixed(2)}`,
|
|
||||||
})),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
await printTable("Disabled Models", (tx) =>
|
|
||||||
tx
|
|
||||||
.select({
|
|
||||||
model: ModelTable.model,
|
|
||||||
timeCreated: ModelTable.timeCreated,
|
|
||||||
})
|
|
||||||
.from(ModelTable)
|
|
||||||
.where(eq(ModelTable.workspaceID, workspace.id))
|
|
||||||
.orderBy(sql`${ModelTable.timeCreated} DESC`)
|
|
||||||
.then((rows) =>
|
|
||||||
rows.map((row) => ({
|
|
||||||
model: row.model,
|
|
||||||
timeCreated: formatDate(row.timeCreated),
|
|
||||||
})),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatMicroCents(value: number | null | undefined) {
|
function formatMicroCents(value: number | null | undefined) {
|
||||||
|
|||||||
Reference in New Issue
Block a user