chore: Add key column key to files_notary table

This commit is contained in:
Max S 2024-09-12 12:13:49 +02:00
parent bb9547be9b
commit 2eddba94be
4 changed files with 166 additions and 153 deletions

View File

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "files_notary" ADD COLUMN "key" VARCHAR(255);

View File

@ -37,7 +37,7 @@ model Contacts {
last_name String @db.VarChar(255) last_name String @db.VarChar(255)
email String @db.VarChar(255) email String @db.VarChar(255)
phone_number String? @db.VarChar(50) phone_number String? @db.VarChar(50)
cell_phone_number String? @db.VarChar(50) cell_phone_number String? @db.VarChar(50)
civility ECivility @default(MALE) civility ECivility @default(MALE)
address Addresses? @relation(fields: [address_uid], references: [uid], onDelete: Cascade) address Addresses? @relation(fields: [address_uid], references: [uid], onDelete: Cascade)
address_uid String? @unique @db.VarChar(255) address_uid String? @unique @db.VarChar(255)
@ -51,25 +51,25 @@ model Contacts {
} }
model Users { model Users {
uid String @id @unique @default(uuid()) @map("uid") uid String @id @unique @default(uuid()) @map("uid")
idNot String @unique @db.VarChar(255) idNot String @unique @db.VarChar(255)
contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade) contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade)
contact_uid String @unique @db.VarChar(255) contact_uid String @unique @db.VarChar(255)
role Roles @relation(fields: [roles_uid], references: [uid], onDelete: Cascade) role Roles @relation(fields: [roles_uid], references: [uid], onDelete: Cascade)
roles_uid String @db.VarChar(255) roles_uid String @db.VarChar(255)
office_role OfficeRoles? @relation(fields: [office_role_uid], references: [uid], onDelete: Cascade) office_role OfficeRoles? @relation(fields: [office_role_uid], references: [uid], onDelete: Cascade)
office_role_uid String? @db.VarChar(255) office_role_uid String? @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
checked_at DateTime? checked_at DateTime?
office_membership Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) office_membership Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade)
office_uid String @db.VarChar(255) office_uid String @db.VarChar(255)
office_folders OfficeFolders[] @relation("OfficeFolderHasStakeholders") office_folders OfficeFolders[] @relation("OfficeFolderHasStakeholders")
appointment Appointments[] appointment Appointments[]
votes Votes[] votes Votes[]
user_notifications UserNotifications[] user_notifications UserNotifications[]
seats Seats[] seats Seats[]
documents_notary DocumentsNotary[] documents_notary DocumentsNotary[]
@@map("users") @@map("users")
} }
@ -80,6 +80,7 @@ model Whitelist {
active Boolean @default(true) active Boolean @default(true)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("whitelist") @@map("whitelist")
} }
@ -89,6 +90,7 @@ model UserWhitelist {
active Boolean @default(true) active Boolean @default(true)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("user_whitelist") @@map("user_whitelist")
} }
@ -117,135 +119,136 @@ model Offices {
} }
model Customers { model Customers {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
status ECustomerStatus @default(PENDING) status ECustomerStatus @default(PENDING)
contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade) contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade)
contact_uid String @unique @db.VarChar(255) contact_uid String @unique @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
office_folders OfficeFolders[] @relation("OfficeFolderHasCustomers") office_folders OfficeFolders[] @relation("OfficeFolderHasCustomers")
documents Documents[] documents Documents[]
password String? @db.VarChar(255) password String? @db.VarChar(255)
totpCodes TotpCodes[] totpCodes TotpCodes[]
office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade)
office_uid String @db.VarChar(255) office_uid String @db.VarChar(255)
notes Notes[] notes Notes[]
documents_notary DocumentsNotary[] documents_notary DocumentsNotary[]
@@map("customers") @@map("customers")
} }
model Notifications { model Notifications {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
message String @db.VarChar(1000) message String @db.VarChar(1000)
redirection_url String @db.VarChar(255) redirection_url String @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
userNotifications UserNotifications[] userNotifications UserNotifications[]
@@map("notifications") @@map("notifications")
} }
model UserNotifications { model UserNotifications {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
user Users @relation(fields: [user_uid], references: [uid], onDelete: Cascade) user Users @relation(fields: [user_uid], references: [uid], onDelete: Cascade)
user_uid String @db.VarChar(255) user_uid String @db.VarChar(255)
read Boolean @default(false) read Boolean @default(false)
notification Notifications @relation(fields: [notification_uid], references: [uid], onDelete: Cascade) notification Notifications @relation(fields: [notification_uid], references: [uid], onDelete: Cascade)
notification_uid String @db.VarChar(255) notification_uid String @db.VarChar(255)
@@map("user_notifications") @@map("user_notifications")
} }
model OfficeFolders { model OfficeFolders {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
folder_number String @db.VarChar(255) folder_number String @db.VarChar(255)
name String @db.VarChar(255) name String @db.VarChar(255)
description String? @db.VarChar(1000) description String? @db.VarChar(1000)
archived_description String? @db.VarChar(255) archived_description String? @db.VarChar(255)
status EFolderStatus @default(LIVE) status EFolderStatus @default(LIVE)
deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade) deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade)
deed_uid String @unique @db.VarChar(255) deed_uid String @unique @db.VarChar(255)
office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade)
office_uid String @db.VarChar(255) office_uid String @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
stakeholders Users[] @relation("OfficeFolderHasStakeholders") stakeholders Users[] @relation("OfficeFolderHasStakeholders")
customers Customers[] @relation("OfficeFolderHasCustomers") customers Customers[] @relation("OfficeFolderHasCustomers")
documents Documents[] documents Documents[]
documents_notary DocumentsNotary[] documents_notary DocumentsNotary[]
folder_anchor OfficeFolderAnchors? @relation(fields: [folder_anchor_uid], references: [uid]) folder_anchor OfficeFolderAnchors? @relation(fields: [folder_anchor_uid], references: [uid])
folder_anchor_uid String? @unique @db.VarChar(255) folder_anchor_uid String? @unique @db.VarChar(255)
notes Notes[] notes Notes[]
@@unique([folder_number, office_uid]) @@unique([folder_number, office_uid])
@@map("office_folders") @@map("office_folders")
} }
model OfficeFolderAnchors { model OfficeFolderAnchors {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
hash_sources String[] hash_sources String[]
root_hash String @db.VarChar(255) root_hash String @db.VarChar(255)
blockchain EBlockchainName @default(TEZOS) blockchain EBlockchainName @default(TEZOS)
status EAnchoringStatus @default(QUEUED) status EAnchoringStatus @default(QUEUED)
anchor_nb_try Int @default(0) anchor_nb_try Int @default(0)
anchored_at DateTime? anchored_at DateTime?
tx_id String? @db.VarChar(255) tx_id String? @db.VarChar(255)
tx_link String? @db.VarChar(255) tx_link String? @db.VarChar(255)
tx_hash String? @db.VarChar(255) tx_hash String? @db.VarChar(255)
folder OfficeFolders? folder OfficeFolders?
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("office_folder_anchors") @@map("office_folder_anchors")
} }
model Documents { model Documents {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
document_status EDocumentStatus @default(ASKED) document_status EDocumentStatus @default(ASKED)
document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid]) document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid])
document_type_uid String @db.VarChar(255) document_type_uid String @db.VarChar(255)
folder OfficeFolders @relation(fields: [folder_uid], references: [uid]) folder OfficeFolders @relation(fields: [folder_uid], references: [uid])
folder_uid String @db.VarChar(255) folder_uid String @db.VarChar(255)
depositor Customers @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade) depositor Customers @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade)
depositor_uid String @db.VarChar(255) depositor_uid String @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
files Files[] files Files[]
document_history DocumentHistory[] document_history DocumentHistory[]
reminders DocumentsReminder[] reminders DocumentsReminder[]
@@map("documents") @@map("documents")
} }
model DocumentsNotary { model DocumentsNotary {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
folder OfficeFolders @relation(fields: [folder_uid], references: [uid]) folder OfficeFolders @relation(fields: [folder_uid], references: [uid])
folder_uid String @db.VarChar(255) folder_uid String @db.VarChar(255)
depositor Users @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade) depositor Users @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade)
depositor_uid String @db.VarChar(255) depositor_uid String @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
files FilesNotary[] files FilesNotary[]
customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade) customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade)
customer_uid String @db.VarChar(255) customer_uid String @db.VarChar(255)
document String @db.VarChar(255) @default("") document String @default("") @db.VarChar(255)
@@map("documents_notary") @@map("documents_notary")
} }
model DocumentsReminder { model DocumentsReminder {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade) document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade)
document_uid String @db.VarChar(255) document_uid String @db.VarChar(255)
reminder_date DateTime reminder_date DateTime
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("documents_reminder") @@map("documents_reminder")
} }
@ -280,16 +283,17 @@ model Files {
} }
model FilesNotary { model FilesNotary {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
document_notary DocumentsNotary @relation(fields: [document_uid], references: [uid], onDelete: Cascade) document_notary DocumentsNotary @relation(fields: [document_uid], references: [uid], onDelete: Cascade)
document_uid String @db.VarChar(255) document_uid String @db.VarChar(255)
file_path String @unique @db.VarChar(255) file_path String @unique @db.VarChar(255)
file_name String @db.VarChar(255) file_name String @db.VarChar(255)
mimetype String @db.VarChar(255) mimetype String @db.VarChar(255)
hash String @db.VarChar(255) hash String @db.VarChar(255)
size Int size Int
created_at DateTime? @default(now()) key String? @db.VarChar(255)
updated_at DateTime? @updatedAt created_at DateTime? @default(now())
updated_at DateTime? @updatedAt
@@map("files_notary") @@map("files_notary")
} }
@ -373,8 +377,9 @@ model Rules {
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
role Roles[] @relation("RolesHasRules") role Roles[] @relation("RolesHasRules")
office_roles OfficeRoles[] @relation("OfficeRolesHasRules") office_roles OfficeRoles[] @relation("OfficeRolesHasRules")
namespace String @db.VarChar(255) @default("notary") namespace String @default("notary") @db.VarChar(255)
groups RulesGroups[] @relation("RulesGroupsHasRules") groups RulesGroups[] @relation("RulesGroupsHasRules")
@@map("rules") @@map("rules")
} }
@ -384,6 +389,7 @@ model RulesGroups {
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
rules Rules[] @relation("RulesGroupsHasRules") rules Rules[] @relation("RulesGroupsHasRules")
@@map("rules_groups") @@map("rules_groups")
} }
@ -426,54 +432,58 @@ model Votes {
} }
model TotpCodes { model TotpCodes {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade) customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade)
customer_uid String @db.VarChar(255) customer_uid String @db.VarChar(255)
code String @db.VarChar(255) code String @db.VarChar(255)
reason TotpCodesReasons @default(LOGIN) reason TotpCodesReasons @default(LOGIN)
resent Boolean @default(false) resent Boolean @default(false)
expire_at DateTime? @default(now()) expire_at DateTime? @default(now())
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("totp_codes") @@map("totp_codes")
} }
model Subscriptions { model Subscriptions {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
type ESubscriptionType type ESubscriptionType
status ESubscriptionStatus @default(ACTIVE) status ESubscriptionStatus @default(ACTIVE)
stripe_subscription_id String @db.VarChar(255) stripe_subscription_id String @db.VarChar(255)
start_date DateTime @default(now()) start_date DateTime @default(now())
end_date DateTime end_date DateTime
nb_seats Int nb_seats Int
office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade)
office_uid String @db.VarChar(255) office_uid String @db.VarChar(255)
seats Seats[] seats Seats[]
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("subscriptions") @@map("subscriptions")
} }
model Seats { model Seats {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
subscription Subscriptions @relation(fields: [subscription_uid], references: [uid], onDelete: Cascade) subscription Subscriptions @relation(fields: [subscription_uid], references: [uid], onDelete: Cascade)
subscription_uid String @db.VarChar(255) subscription_uid String @db.VarChar(255)
user Users @relation(fields: [user_uid], references: [uid], onDelete: Cascade) user Users @relation(fields: [user_uid], references: [uid], onDelete: Cascade)
user_uid String @db.VarChar(255) user_uid String @db.VarChar(255)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
@@map("seats") @@map("seats")
} }
model Notes { model Notes {
uid String @id @unique @default(uuid()) uid String @id @unique @default(uuid())
content String @db.VarChar(1000) content String @db.VarChar(1000)
created_at DateTime? @default(now()) created_at DateTime? @default(now())
updated_at DateTime? @updatedAt updated_at DateTime? @updatedAt
customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade) customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade)
customer_uid String @db.VarChar(255) customer_uid String @db.VarChar(255)
folder OfficeFolders @relation(fields: [folder_uid], references: [uid], onDelete: Cascade) folder OfficeFolders @relation(fields: [folder_uid], references: [uid], onDelete: Cascade)
folder_uid String @db.VarChar(255) folder_uid String @db.VarChar(255)
@@map("notes") @@map("notes")
} }

View File

@ -40,6 +40,7 @@ export default class FilesNotaryRepository extends BaseRepository {
mimetype: file.mimetype, mimetype: file.mimetype,
hash: file.hash, hash: file.hash,
size: file.size, size: file.size,
key: key,
}, },
}; };
return this.model.create({ ...createArgs, include: { document_notary: true } }); return this.model.create({ ...createArgs, include: { document_notary: true } });

View File

@ -61,10 +61,10 @@ export default class FilesNotaryService extends BaseService {
*/ */
public async download(uid: string) { public async download(uid: string) {
const file = await this.filesNotaryRepository.findOneByUid(uid); const file = await this.filesNotaryRepository.findOneByUid(uid);
if (!file?.uid) return null; if (!file?.key) return null;
const fileResult = await fetch(file.file_path.concat("?pinataGatewayToken=").concat(this.variables.PINATA_GATEWAY_TOKEN)); const fileResult = await fetch(file.file_path.concat("?pinataGatewayToken=").concat(this.variables.PINATA_GATEWAY_TOKEN));
const fileArrayBuffer = await fileResult.arrayBuffer(); const fileArrayBuffer = await fileResult.arrayBuffer();
return { file: file, buffer: await this.cryptoService.decrypt(Buffer.from(fileArrayBuffer), file.uid) }; return { file: file, buffer: await this.cryptoService.decrypt(Buffer.from(fileArrayBuffer), file.key) };
} }
/** /**