package dao

import (
	"context"

	"github.com/echochat/backend/app/auth/model"
	"gorm.io/gorm"
)

type OAuthAccountDAO struct {
	db *gorm.DB
}

func NewOAuthAccountDAO(db *gorm.DB) *OAuthAccountDAO {
	return &OAuthAccountDAO{db: db}
}

func (d *OAuthAccountDAO) FindByProviderOpenID(ctx context.Context, provider, openID string) (*model.OAuthAccount, error) {
	var account model.OAuthAccount
	err := d.db.WithContext(ctx).Where("provider = ? AND open_id = ?", provider, openID).First(&account).Error
	if err != nil {
		return nil, err
	}
	return &account, nil
}

func (d *OAuthAccountDAO) Create(ctx context.Context, account *model.OAuthAccount) error {
	return d.db.WithContext(ctx).Create(account).Error
}

func (d *OAuthAccountDAO) Update(ctx context.Context, account *model.OAuthAccount) error {
	return d.db.WithContext(ctx).Save(account).Error
}
