From ada941f94ff3259a29b9c7f76be5b4126501f7d0 Mon Sep 17 00:00:00 2001 From: Danilo Romano Date: Sat, 11 May 2024 12:13:17 -0300 Subject: [PATCH 1/3] refactor: using datetime instead of string form dates with Prisma --- .../migrations/20240511143905_/migration.sql | 31 +++++++++ prisma/schema.prisma | 68 +++++++++---------- 2 files changed, 65 insertions(+), 34 deletions(-) create mode 100644 prisma/migrations/20240511143905_/migration.sql diff --git a/prisma/migrations/20240511143905_/migration.sql b/prisma/migrations/20240511143905_/migration.sql new file mode 100644 index 00000000..b3be8c83 --- /dev/null +++ b/prisma/migrations/20240511143905_/migration.sql @@ -0,0 +1,31 @@ +/* + 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 TIMESTAMP using "created_at"::timestamptz AT TIME ZONE 'America/Sao_Paulo'; +*/ + +-- AlterTable +alter table "category_supplies" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "category_supplies" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +-- AlterTable +alter table "sessions" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "sessions" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +-- AlterTable +alter table "shelter_managers" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "shelter_managers" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +-- AlterTable +alter table "shelter_supplies" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "shelter_supplies" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +-- AlterTable +alter table "shelters" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "shelters" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +-- AlterTable +alter table "supplies" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "supplies" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +-- AlterTable; +alter table "users" alter column "created_at" type TIMESTAMP using "created_at"::timestamptz; +alter table "users" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz ; + diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 792b1f65..3658fc4a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -22,8 +22,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[] @@ -32,13 +32,13 @@ 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]) @@ -46,10 +46,10 @@ model Session { } 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[] @@ -57,12 +57,12 @@ model SupplyCategory { } 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]) @@ -72,11 +72,11 @@ model ShelterSupply { } model Supply { - id String @id @default(uuid()) - supplyCategoryId String @map("supply_category_id") + id String @id @default(uuid()) + supplyCategoryId String @map("supply_category_id") name 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() supplyCategory SupplyCategory @relation(fields: [supplyCategoryId], references: [id]) shelterSupplies ShelterSupply[] @@ -85,20 +85,20 @@ model Supply { } model Shelter { - id String @id @default(uuid()) - name String @unique - pix String? @unique + id String @id @default(uuid()) + name String @unique + pix String? @unique address String - petFriendly Boolean? @map("pet_friendly") - shelteredPeople Int? @map("sheltered_people") + petFriendly Boolean? @map("pet_friendly") + shelteredPeople Int? @map("sheltered_people") capacity Int? contact String? - prioritySum Int @default(value: 0) @map("priority_sum") + prioritySum Int @default(value: 0) @map("priority_sum") latitude Float? longitude Float? - verified Boolean @default(value: false) - createdAt String @map("created_at") @db.VarChar(32) - updatedAt String? @map("updated_at") @db.VarChar(32) + verified Boolean @default(value: false) + createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz() + updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz() shelterManagers ShelterManagers[] shelterSupplies ShelterSupply[] @@ -107,10 +107,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]) From e826c672cc3feb7d30e6894855ed6f54d640f776 Mon Sep 17 00:00:00 2001 From: Danilo Romano Date: Sat, 11 May 2024 12:52:47 -0300 Subject: [PATCH 2/3] fix: corrigindo tipo do dado e adicionando default value --- .../migrations/20240511143905_/migration.sql | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/prisma/migrations/20240511143905_/migration.sql b/prisma/migrations/20240511143905_/migration.sql index b3be8c83..529d324f 100644 --- a/prisma/migrations/20240511143905_/migration.sql +++ b/prisma/migrations/20240511143905_/migration.sql @@ -4,28 +4,35 @@ 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 TIMESTAMP using "created_at"::timestamptz AT TIME ZONE 'America/Sao_Paulo'; + 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 TIMESTAMP using "created_at"::timestamptz; -alter table "category_supplies" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +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 TIMESTAMP using "created_at"::timestamptz; -alter table "sessions" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +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 TIMESTAMP using "created_at"::timestamptz; -alter table "shelter_managers" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +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 TIMESTAMP using "created_at"::timestamptz; -alter table "shelter_supplies" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +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 TIMESTAMP using "created_at"::timestamptz; -alter table "shelters" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +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 TIMESTAMP using "created_at"::timestamptz; -alter table "supplies" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz; +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 TIMESTAMP using "created_at"::timestamptz; -alter table "users" alter column "updated_at" type TIMESTAMP using "updated_at"::timestamptz ; +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 ; From 0af1ae653bf41a269511237dde772cc60cc883d3 Mon Sep 17 00:00:00 2001 From: Danilo Romano Date: Sat, 18 May 2024 11:28:49 -0300 Subject: [PATCH 3/3] chore: changing date_time coluns for new models --- .../migration.sql | 20 +++++++++++++++++ prisma/schema.prisma | 22 +++++++++---------- 2 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 prisma/migrations/20240518142542_change_date_columns_type/migration.sql diff --git a/prisma/migrations/20240518142542_change_date_columns_type/migration.sql b/prisma/migrations/20240518142542_change_date_columns_type/migration.sql new file mode 100644 index 00000000..ea6298b6 --- /dev/null +++ b/prisma/migrations/20240518142542_change_date_columns_type/migration.sql @@ -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 ; + diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a88a8fef..25e88525 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -109,8 +109,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[] @@ -132,22 +132,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") }