From 31c424912910ae9d670041fbc03415da76a0706d Mon Sep 17 00:00:00 2001 From: soxx Date: Mon, 24 Jun 2024 22:31:18 +0200 Subject: [PATCH] refactor(postgres): use generics for IDs Signed-off-by: soxx --- pkg/models/orm.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pkg/models/orm.go b/pkg/models/orm.go index 7e74329..7235e57 100644 --- a/pkg/models/orm.go +++ b/pkg/models/orm.go @@ -7,27 +7,26 @@ import ( ) type ID interface { - AnthroveUserID - AnthroveSourceID - AnthrovePostID + AnthroveUserID | AnthroveSourceID | AnthrovePostID } -type BaseModel struct { - ID string `gorm:"primaryKey"` +type BaseModel[T ID] struct { + ID T `gorm:"primaryKey"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `gorm:"index"` } -func (base *BaseModel) BeforeCreate(db *gorm.DB) error { +func (base *BaseModel[T]) BeforeCreate(db *gorm.DB) error { + var defaultVar T - if base.ID == "" { + if base.ID == defaultVar { id, err := gonanoid.New(25) if err != nil { return err } - base.ID = id + base.ID = T(id) } return nil