package model

import (
	"golang.org/x/oauth2"
	"time"
)

// YaDisk (Storage) - хранит информацию о пользователе Yandex и данных необходимых для хранилища.
// Пользователь может иметь несколько хранилищ YaDisk.
// Login - уникальное поле и закрепляется только за одним пользователем
type YaDisk struct {
	ID             string    `bson:"_id,omitempty" json:"id"`
	UserID         string    `bson:"user_id" json:"user_id"`
	UID            string    `bson:"uid" json:"uid"`                   // Yandex UID. Unique ?
	Login          string    `bson:"login" json:"login"`               // Yandex login. Unique ?
	DisplayName    string    `bson:"display_name" json:"display_name"` // Отображаемое имя пользователя в Yandex
	AccessToken    string    `bson:"access_token" json:"-"`
	RefreshToken   string    `bson:"refresh_token" json:"-"`
	ExpiresIn      time.Time `bson:"expires_in" json:"-"`
	TokenType      string    `bson:"token_type" json:"-"`
	TemplateFolder string    `bson:"template_folder" json:"template_folder"`
	SaveFolder     string    `bson:"save_folder" json:"save_folder"`
	IsDeleted      bool      `bson:"is_deleted" json:"is_deleted"`
	CreatedAt      time.Time `bson:"created_at" json:"created_at"`
	UpdatedAt      time.Time `bson:"updated_at" json:"updated_at"`
}

func (m *YaDisk) Token() *oauth2.Token {
	token := &oauth2.Token{
		AccessToken:  m.AccessToken,
		TokenType:    m.TokenType,
		RefreshToken: m.RefreshToken,
		Expiry:       m.ExpiresIn,
	}

	return token
}
