## Description Previously we assumed that there can only be 1 subscription per user. However, that will soon no longer the case with the introduction of the Teams subscription. This PR will apply the required migrations to support multiple subscriptions. ## Changes Made - Updated the Prisma schema to allow for multiple `Subscriptions` per `User` - Added a Stripe `customerId` field to the `User` model - Updated relevant billing sections to support multiple subscriptions ## Testing Performed - Tested running the Prisma migration on a demo database created on the main branch Will require a lot of additional testing. ## Checklist - [ ] I have tested these changes locally and they work as expected. - [ ] I have added/updated tests that prove the effectiveness of these changes. - [X] I have followed the project's coding style guidelines. ## Additional Notes Added the following custom SQL statement to the migration: > DELETE FROM "Subscription" WHERE "planId" IS NULL OR "priceId" IS NULL; Prior to deployment this will require changes to Stripe products: - Adding `type` meta attribute --------- Co-authored-by: Lucas Smith <me@lucasjamessmith.me>
72 lines
2.3 KiB
TypeScript
72 lines
2.3 KiB
TypeScript
declare namespace NodeJS {
|
|
export interface ProcessEnv {
|
|
NEXT_PUBLIC_WEBAPP_URL?: string;
|
|
NEXT_PUBLIC_MARKETING_URL?: string;
|
|
|
|
NEXT_PRIVATE_GOOGLE_CLIENT_ID?: string;
|
|
NEXT_PRIVATE_GOOGLE_CLIENT_SECRET?: string;
|
|
|
|
NEXT_PRIVATE_DATABASE_URL: string;
|
|
NEXT_PRIVATE_ENCRYPTION_KEY: string;
|
|
|
|
NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID: string;
|
|
|
|
NEXT_PRIVATE_STRIPE_API_KEY: string;
|
|
NEXT_PRIVATE_STRIPE_WEBHOOK_SECRET: string;
|
|
|
|
NEXT_PUBLIC_UPLOAD_TRANSPORT?: 'database' | 's3';
|
|
NEXT_PRIVATE_UPLOAD_ENDPOINT?: string;
|
|
NEXT_PRIVATE_UPLOAD_REGION?: string;
|
|
NEXT_PRIVATE_UPLOAD_BUCKET?: string;
|
|
NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID?: string;
|
|
NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY?: string;
|
|
NEXT_PRIVATE_UPLOAD_DISTRIBUTION_DOMAIN?: string;
|
|
NEXT_PRIVATE_UPLOAD_DISTRIBUTION_KEY_ID?: string;
|
|
NEXT_PRIVATE_UPLOAD_DISTRIBUTION_KEY_CONTENTS?: string;
|
|
|
|
NEXT_PRIVATE_SIGNING_TRANSPORT?: 'local' | 'http' | 'gcloud-hsm';
|
|
NEXT_PRIVATE_SIGNING_PASSPHRASE?: string;
|
|
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH?: string;
|
|
NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS?: string;
|
|
NEXT_PRIVATE_SIGNING_LOCAL_FILE_ENCODING?: string;
|
|
|
|
NEXT_PRIVATE_SMTP_TRANSPORT?: 'mailchannels' | 'resend' | 'smtp-auth' | 'smtp-api';
|
|
|
|
NEXT_PRIVATE_RESEND_API_KEY?: string;
|
|
|
|
NEXT_PRIVATE_MAILCHANNELS_API_KEY?: string;
|
|
NEXT_PRIVATE_MAILCHANNELS_DKIM_DOMAIN?: string;
|
|
NEXT_PRIVATE_MAILCHANNELS_DKIM_SELECTOR?: string;
|
|
NEXT_PRIVATE_MAILCHANNELS_DKIM_PRIVATE_KEY?: string;
|
|
NEXT_PRIVATE_MAILCHANNELS_ENDPOINT?: string;
|
|
|
|
NEXT_PRIVATE_SMTP_HOST?: string;
|
|
NEXT_PRIVATE_SMTP_PORT?: string;
|
|
NEXT_PRIVATE_SMTP_USERNAME?: string;
|
|
NEXT_PRIVATE_SMTP_PASSWORD?: string;
|
|
|
|
NEXT_PRIVATE_SMTP_APIKEY_USER?: string;
|
|
NEXT_PRIVATE_SMTP_APIKEY?: string;
|
|
|
|
NEXT_PRIVATE_SMTP_SECURE?: string;
|
|
|
|
NEXT_PRIVATE_SMTP_FROM_NAME?: string;
|
|
NEXT_PRIVATE_SMTP_FROM_ADDRESS?: string;
|
|
|
|
/**
|
|
* Vercel environment variables
|
|
*/
|
|
VERCEL?: string;
|
|
VERCEL_ENV?: 'production' | 'development' | 'preview';
|
|
VERCEL_URL?: string;
|
|
|
|
DEPLOYMENT_TARGET?: 'webapp' | 'marketing';
|
|
FONT_CAVEAT_URI: string;
|
|
|
|
POSTGRES_URL?: string;
|
|
DATABASE_URL?: string;
|
|
POSTGRES_PRISMA_URL?: string;
|
|
POSTGRES_URL_NON_POOLING?: string;
|
|
}
|
|
}
|