* feat: add README for @cio/db package and remove existingAccounts.json * load session, load profile and organization, add create profile hook * chore: cache session request The trick was passing all the cookies to the backend. Previously I was only passing the better-auth.session_token and not better-auth.session_data. Read about the difference here https://www.better-auth.com/docs/concepts/cookies#custom-cookies * feat: login, logout, onboarding, verify email, reset password. * feat: complete change email and email verification * feat: standardise how we make rpc calls and create org endpoints * fix ui errors * fix: handle potential undefined customerId and standardize avatar URL property * refactor: standardize custom domain handling and update telegram chat ID references * chore: add tailwind prefix to @cio/ui this fixed the media query issues because @cio/ui classes were overriding this dashboard tailwind build * chore: clean up org sidebar * chore: persist mode state * feat: implement order breadcrumbs * chore: upgrade to better auth 1.4 * chore: address common auth flow bugs and setup app for others to setup locally.
36 lines
1.5 KiB
Markdown
36 lines
1.5 KiB
Markdown
# @cio/db
|
|
|
|
This package handles everything related to the database, schema, migrations and connection.
|
|
|
|
## Stack
|
|
|
|
1. Postgres - We use postgres for the database
|
|
2. Drizzle ORM - For managing and querying the database
|
|
3. Better Auth - For managing the auth tables (users, account, session).
|
|
|
|
## Workflow
|
|
|
|
We used Supabase in the past for managing the supabase but have now moved on to use postgres directly and auth managed by our backend. This means the workflow is a mix of the Database First approach (Option 1) and the Codebase First approach (Option 2). Learn more about each approach [from the drizzle migration docs](https://orm.drizzle.team/docs/migrations).
|
|
|
|
Here is how I do it:
|
|
|
|
### 1. Local DB to Drizzle Schema TS file
|
|
|
|
I have a postgres tool where I can make changes to the db as I want. I am not so familiar with drizzle that much so I am sticking with this for now.
|
|
|
|
```bash
|
|
pnpm db pull # this does sql -> drizzle ts code
|
|
```
|
|
|
|
### 2. Drizzle Schema file to Prod SQL
|
|
|
|
Now when I am ready to deploy the feature, I can use [option 2](https://orm.drizzle.team/docs/migrations) which is makes the typescript schema the source of truth. This command will only run on CI on every merge on a condition that there was a change to the schema file `packages/db/src/schema.ts`
|
|
|
|
```bash
|
|
pnpm db push # this does drizzle ts code to prod db
|
|
```
|
|
|
|
## OR
|
|
|
|
I can make changes directly to the schema file and run `pnpm db push` to push the changes to the source db.
|