From d18b72acf464b8936ef887b5cce0c06f060d6e3a Mon Sep 17 00:00:00 2001 From: Le Dien Phuc Date: Fri, 24 May 2024 14:37:08 +0700 Subject: [PATCH] feat: vault soft delete (#1395) --- .../20240524142655-add-soft-delete-vaults-table.sql | 9 +++++++++ pkg/model/vault.go | 1 + pkg/repo/vault/pg.go | 3 +++ pkg/repo/vault/query.go | 1 + 4 files changed, 14 insertions(+) create mode 100644 migrations/schemas/20240524142655-add-soft-delete-vaults-table.sql diff --git a/migrations/schemas/20240524142655-add-soft-delete-vaults-table.sql b/migrations/schemas/20240524142655-add-soft-delete-vaults-table.sql new file mode 100644 index 000000000..b1d6c0507 --- /dev/null +++ b/migrations/schemas/20240524142655-add-soft-delete-vaults-table.sql @@ -0,0 +1,9 @@ +-- +migrate Up +ALTER TABLE + vaults +ADD + COLUMN deleted_at timestamptz; + +-- +migrate Down +ALTER TABLE + vaults DROP COLUMN deleted_at; \ No newline at end of file diff --git a/pkg/model/vault.go b/pkg/model/vault.go index 67c52730a..c3eb9e210 100644 --- a/pkg/model/vault.go +++ b/pkg/model/vault.go @@ -12,6 +12,7 @@ type Vault struct { WalletNumber int64 `json:"wallet_number"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` + DeletedAt *time.Time `json:"deleted_at"` VaultTreasurers []VaultTreasurer `json:"vault_treasurers" gorm:"foreignkey:VaultId"` TotalAmountEVM string `json:"total_amount_evm" gorm:"-"` TotalAmountSolana string `json:"total_amount_solana" gorm:"-"` diff --git a/pkg/repo/vault/pg.go b/pkg/repo/vault/pg.go index 2ba17efa8..8a5a0c042 100644 --- a/pkg/repo/vault/pg.go +++ b/pkg/repo/vault/pg.go @@ -44,6 +44,9 @@ func (pg *pg) GetLatestWalletNumber() (walletNumber sql.NullInt64, err error) { func (pg *pg) List(q ListQuery) (vaults []model.Vault, err error) { db := pg.db + if !q.GetArchived { + db = db.Where("vaults.deleted_at IS NULL") + } if q.GuildID != "" { db = db.Where("vaults.guild_id = ?", q.GuildID) } diff --git a/pkg/repo/vault/query.go b/pkg/repo/vault/query.go index e57d95ece..a22d83195 100644 --- a/pkg/repo/vault/query.go +++ b/pkg/repo/vault/query.go @@ -7,4 +7,5 @@ type ListQuery struct { SolanaWallet string Threshold string VaultIDs []string + GetArchived bool }