Skip to content

refactor: using Datetime instead of string form dates with Prisma #61

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: develop
Choose a base branch
from
38 changes: 38 additions & 0 deletions prisma/migrations/20240511143905_/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
Warnings:
Por padrão o prisma dropa e recria a coluna do banco.
Esse script usa um cast do postgres para converter as colunas para o tipo correto ao invés de dropá-las
Assumo que as timestamp estão sendo salvas em UTC
Para mudar a migration para setar as datas atuais para uma timezone específica, basta adicionar o statement "AT TIME ZONE" após a conversão
alter table "category_supplies" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz AT TIME ZONE 'America/Sao_Paulo';
*/

-- AlterTable
alter table "category_supplies" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "category_supplies" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "category_supplies" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz;
-- AlterTable
alter table "sessions" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "sessions" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "sessions" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz;
-- AlterTable
alter table "shelter_managers" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "shelter_managers" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "shelter_managers" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz;
-- AlterTable
alter table "shelter_supplies" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "shelter_supplies" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "shelter_supplies" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz;
-- AlterTable
alter table "shelters" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "shelters" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "shelters" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz;
-- AlterTable
alter table "supplies" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "supplies" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "supplies" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz;
-- AlterTable;
alter table "users" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "users" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "users" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz ;

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
Warnings:

- The `created_at` column on the `partners` table would be dropped and recreated. This will lead to data loss if there is data in the column.
- The `updated_at` column on the `partners` table would be dropped and recreated. This will lead to data loss if there is data in the column.
- The `created_at` column on the `supporters` table would be dropped and recreated. This will lead to data loss if there is data in the column.
- The `updated_at` column on the `supporters` table would be dropped and recreated. This will lead to data loss if there is data in the column.

*/

-- AlterTable;
alter table "partners" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "partners" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "partners" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz ;

-- AlterTable;
alter table "supporters" alter column "created_at" type TIMESTAMPTZ using "created_at"::timestamptz;
alter table "supporters" alter column "created_at" set default CURRENT_TIMESTAMP;
alter table "supporters" alter column "updated_at" type TIMESTAMPTZ using "updated_at"::timestamptz ;

64 changes: 32 additions & 32 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ model User {
password String
phone String @unique
accessLevel AccessLevel @default(value: User)
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

sessions Session[]
shelterManagers ShelterManagers[]
Expand All @@ -54,37 +54,37 @@ model User {
}

model Session {
id String @id @default(uuid())
userId String @map("user_id")
id String @id @default(uuid())
userId String @map("user_id")
ip String?
userAgent String? @map("user_agent")
active Boolean @default(value: true)
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
userAgent String? @map("user_agent")
active Boolean @default(value: true)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

user User @relation(fields: [userId], references: [id])

@@map("sessions")
}

model SupplyCategory {
id String @id @default(uuid())
name String @unique
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
id String @id @default(uuid())
name String @unique
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

supplies Supply[]

@@map("category_supplies")
}

model ShelterSupply {
shelterId String @map("shelter_id")
supplyId String @map("supply_id")
priority Int @default(value: 0)
shelterId String @map("shelter_id")
supplyId String @map("supply_id")
priority Int @default(value: 0)
quantity Int?
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

shelter Shelter @relation(fields: [shelterId], references: [id])
supply Supply @relation(fields: [supplyId], references: [id])
Expand Down Expand Up @@ -129,8 +129,8 @@ model Shelter {
verified Boolean @default(value: false)
category ShelterCategory @default(value: Shelter)
actived Boolean @default(value: true)
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

shelterManagers ShelterManagers[]
shelterSupplies ShelterSupply[]
Expand All @@ -142,10 +142,10 @@ model Shelter {
}

model ShelterManagers {
shelterId String @map("shelter_id")
userId String @map("user_id")
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
shelterId String @map("shelter_id")
userId String @map("user_id")
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

user User @relation(fields: [userId], references: [id])
shelter Shelter @relation(fields: [shelterId], references: [id])
Expand All @@ -155,22 +155,22 @@ model ShelterManagers {
}

model Partners {
id String @id @default(uuid())
name String @unique
id String @id @default(uuid())
name String @unique
link String
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

@@map("partners")
}

model Supporters {
id String @id @default(uuid())
name String @unique
imageUrl String @map("image_url")
id String @id @default(uuid())
name String @unique
imageUrl String @map("image_url")
link String
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz()
updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz()

@@map("supporters")
}
Expand Down