feat: add account transfers and refine icons, settings and safety dialogs
This commit is contained in:
1 parent
a4e9d56b8a
commit
da98d02661
33 files changed
+1866
-347
No files matched your search
@@ -0,0 +1,14 @@
|
||||
ALTER TABLE `User` ADD COLUMN `hiddenMenus` VARCHAR(128) NOT NULL DEFAULT '', DROP COLUMN `showSidebar`;
|
||||
CREATE TABLE `Transfer` (
|
||||
`id` CHAR(36) NOT NULL, `importedFromId` CHAR(36) NULL, `userId` CHAR(36) NOT NULL,
|
||||
`sourceId` CHAR(36) NOT NULL, `targetId` CHAR(36) NOT NULL,
|
||||
`sourceRevisionId` CHAR(36) NOT NULL, `targetRevisionId` CHAR(36) NOT NULL,
|
||||
`sourceCurrency` CHAR(3) NOT NULL, `targetCurrency` CHAR(3) NOT NULL,
|
||||
`amount` DECIMAL(24,8) NOT NULL, `received` DECIMAL(24,8) NOT NULL, `fee` DECIMAL(24,8) NOT NULL,
|
||||
`effectiveDate` DATETIME(3) NOT NULL, `notes` TEXT NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`), UNIQUE INDEX `Transfer_sourceRevisionId_key` (`sourceRevisionId`), UNIQUE INDEX `Transfer_targetRevisionId_key` (`targetRevisionId`),
|
||||
UNIQUE INDEX `Transfer_userId_importedFromId_key` (`userId`,`importedFromId`), INDEX `Transfer_userId_effectiveDate_idx` (`userId`,`effectiveDate`),
|
||||
CONSTRAINT `Transfer_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `Transfer_sourceId_fkey` FOREIGN KEY (`sourceId`) REFERENCES `Position` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `Transfer_targetId_fkey` FOREIGN KEY (`targetId`) REFERENCES `Position` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE `User` ADD COLUMN `showNotes` BOOLEAN NOT NULL DEFAULT true;
|
||||
@@ -10,7 +10,8 @@ model User {
|
||||
username String @unique @db.VarChar(64)
|
||||
passwordHash String @db.VarChar(255)
|
||||
baseCurrency String @default("CNY") @db.Char(3)
|
||||
showSidebar Boolean @default(true)
|
||||
hiddenMenus String @default("") @db.VarChar(128)
|
||||
showNotes Boolean @default(true)
|
||||
idleMinutes Int @default(30)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -18,6 +19,7 @@ model User {
|
||||
rates ExchangeRate[]
|
||||
sessions Session[]
|
||||
icons Icon[]
|
||||
transfers Transfer[]
|
||||
}
|
||||
model Session {
|
||||
id String @id @db.Char(64)
|
||||
@@ -50,6 +52,8 @@ model Position {
|
||||
revisions Revision[]
|
||||
outgoing PositionLink[] @relation("Source")
|
||||
incoming PositionLink[] @relation("Target")
|
||||
transfersOut Transfer[] @relation("TransferSource")
|
||||
transfersIn Transfer[] @relation("TransferTarget")
|
||||
@@index([userId,kind])
|
||||
@@unique([userId,importedFromId])
|
||||
}
|
||||
@@ -100,3 +104,26 @@ model Icon {
|
||||
@@unique([ownerId,hash,shared])
|
||||
@@index([shared,name])
|
||||
}
|
||||
|
||||
model Transfer {
|
||||
id String @id @default(uuid()) @db.Char(36)
|
||||
importedFromId String? @db.Char(36)
|
||||
userId String @db.Char(36)
|
||||
user User @relation(fields:[userId],references:[id],onDelete:Cascade)
|
||||
sourceId String @db.Char(36)
|
||||
targetId String @db.Char(36)
|
||||
source Position @relation("TransferSource",fields:[sourceId],references:[id],onDelete:Cascade)
|
||||
target Position @relation("TransferTarget",fields:[targetId],references:[id],onDelete:Cascade)
|
||||
sourceRevisionId String @unique @db.Char(36)
|
||||
targetRevisionId String @unique @db.Char(36)
|
||||
sourceCurrency String @db.Char(3)
|
||||
targetCurrency String @db.Char(3)
|
||||
amount Decimal @db.Decimal(24,8)
|
||||
received Decimal @db.Decimal(24,8)
|
||||
fee Decimal @db.Decimal(24,8)
|
||||
effectiveDate DateTime @db.DateTime(3)
|
||||
notes String @db.Text
|
||||
createdAt DateTime @default(now())
|
||||
@@unique([userId,importedFromId])
|
||||
@@index([userId,effectiveDate])
|
||||
}
|
||||
Reference in new issue
Block a user