package gmodel

import (
	"context"
	"fusenapi/utils/auth"
	"time"

	"github.com/zeromicro/go-zero/core/logx"
	"gorm.io/gorm"
)

func (m *FsGuestModel) GenerateGuestID(ctx context.Context, AccessSecret *string) (authKey string, err error) {

	err = m.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
		now := time.Now().Unix()
		var record = &FsGuest{}
		tx.Create(record)

		authKey, err = auth.GenerateJwtToken(AccessSecret, now, 31536000, 0, int64(record.GuestId))
		if err != nil {
			logx.Error(err)
			err = tx.Rollback().Error
			if err != nil {
				logx.Error(err)
			}
			return err
		}
		record.AuthKey = &authKey
		record.CreatedAt = &now
		err = tx.Updates(record).Error
		if err != nil {
			logx.Error(err)
			return err
		}
		return nil
	})

	if err != nil {
		return "", err
	}

	return authKey, nil
}