Download packages/console/core/script/black-select-workspaces.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.33 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/4bbfe8b25e2b3fcaec1aee78c50a8a29306735ca/packages/console/core/script/black-select-workspaces.ts
- Command line
-
hf download hf://SaylorTwift/opencode@4bbfe8b25e2b3fcaec1aee78c50a8a29306735ca/packages/console/core/script/black-select-workspaces.ts
-
curl -L -o black-select-workspaces.ts https://huggingface.co/SaylorTwift/opencode/resolve/4bbfe8b25e2b3fcaec1aee78c50a8a29306735ca/packages/console/core/script/black-select-workspaces.ts
1.33 kB
| import { Database, eq, and, sql, inArray, isNull } from "../src/drizzle/index.js" | |
| import { BillingTable, BlackPlans } from "../src/schema/billing.sql.js" | |
| import { UserTable } from "../src/schema/user.sql.js" | |
| import { AuthTable } from "../src/schema/auth.sql.js" | |
| const plan = process.argv[2] as (typeof BlackPlans)[number] | |
| if (!BlackPlans.includes(plan)) { | |
| console.error("Usage: bun foo.ts <count>") | |
| process.exit(1) | |
| } | |
| const workspaces = await Database.use((tx) => | |
| tx | |
| .select({ workspaceID: BillingTable.workspaceID }) | |
| .from(BillingTable) | |
| .where(and(eq(BillingTable.subscriptionPlan, plan), isNull(BillingTable.timeSubscriptionSelected))) | |
| .orderBy(sql`RAND()`) | |
| .limit(100), | |
| ) | |
| console.log(`Found ${workspaces.length} workspaces on Black ${plan} waitlist`) | |
| console.log("== Workspace IDs ==") | |
| const ids = workspaces.map((w) => w.workspaceID) | |
| for (const id of ids) { | |
| console.log(id) | |
| } | |
| console.log("\n== User Emails ==") | |
| const emails = await Database.use((tx) => | |
| tx | |
| .select({ email: AuthTable.subject }) | |
| .from(UserTable) | |
| .innerJoin(AuthTable, and(eq(UserTable.accountID, AuthTable.accountID), eq(AuthTable.provider, "email"))) | |
| .where(inArray(UserTable.workspaceID, ids)), | |
| ) | |
| const unique = new Set(emails.map((row) => row.email)) | |
| for (const email of unique) { | |
| console.log(email) | |
| } | |