From 981643df38ea45a7b5d3e7cd88214f9543c82ae1 Mon Sep 17 00:00:00 2001 From: kyy Date: Tue, 3 Feb 2026 09:29:00 +0900 Subject: [PATCH] =?UTF-8?q?=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8?= =?UTF-8?q?=20=EC=8B=9C=ED=81=AC=EB=A6=BF=20=EC=A0=80=EC=9E=A5=EC=86=8C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/client_secret_repository.go | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 backend/internal/repository/client_secret_repository.go diff --git a/backend/internal/repository/client_secret_repository.go b/backend/internal/repository/client_secret_repository.go new file mode 100644 index 00000000..48d47668 --- /dev/null +++ b/backend/internal/repository/client_secret_repository.go @@ -0,0 +1,40 @@ +package repository + +import ( + "baron-sso-backend/internal/domain" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" +) + +type clientSecretRepository struct { + db *gorm.DB +} + +func NewClientSecretRepository(db *gorm.DB) domain.ClientSecretRepository { + return &clientSecretRepository{db: db} +} + +func (r *clientSecretRepository) Upsert(ctx context.Context, clientID, secret string) error { + cs := domain.ClientSecret{ + ClientID: clientID, + ClientSecret: secret, + } + return r.db.WithContext(ctx).Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "client_id"}}, + DoUpdates: clause.AssignmentColumns([]string{"client_secret", "updated_at"}), + }).Create(&cs).Error +} + +func (r *clientSecretRepository) GetByID(ctx context.Context, clientID string) (string, error) { + var cs domain.ClientSecret + if err := r.db.WithContext(ctx).Where("client_id = ?", clientID).First(&cs).Error; err != nil { + return "", err + } + return cs.ClientSecret, nil +} + +func (r *clientSecretRepository) Delete(ctx context.Context, clientID string) error { + return r.db.WithContext(ctx).Where("client_id = ?", clientID).Delete(&domain.ClientSecret{}).Error +}