Buckets:
| import { Database } from "../src/drizzle/index.js" | |
| import { CouponTable, CouponType } from "../src/schema/billing.sql.js" | |
| const email = process.argv[2] | |
| const type = process.argv[3] as (typeof CouponType)[number] | |
| if (!email || !type) { | |
| console.error(`Usage: bun create-coupon.ts <email> <${CouponType.join("|")}>`) | |
| process.exit(1) | |
| } | |
| if (!(CouponType as readonly string[]).includes(type)) { | |
| console.error(`Error: type must be one of ${CouponType.join(", ")}`) | |
| process.exit(1) | |
| } | |
| await Database.use((tx) => | |
| tx.insert(CouponTable).values({ | |
| email, | |
| type, | |
| }), | |
| ) | |
| console.log(`Created ${type} coupon for ${email}`) | |
Xet Storage Details
- Size:
- 630 Bytes
- Xet hash:
- 657fc46dbf87d17a74ffa92316abf40d802d220ef03dd7aaa767a4fdc27b8020
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.