//
// Copyright (C) 2024 veypi <i@veypi.com>
// 2024-09-20 16:10:16
// Distributed under terms of the MIT license.
//

package models

import (
	"github.com/veypi/vbase/cfg"
	"github.com/veypi/vigo"
)

var AllModels = &vigo.ModelList{}

func init() {
	// 注册所有模型
	AllModels.Add(&User{})
	AllModels.Add(&Identity{})
	AllModels.Add(&Session{})
	AllModels.Add(&Org{})
	AllModels.Add(&OrgMember{})

	// Auth 模块模型
	AllModels.Add(&Permission{})
	AllModels.Add(&Role{})
	AllModels.Add(&RolePermission{})
	AllModels.Add(&UserRole{})
	AllModels.Add(&UserPermission{})

	// OAuth 模型
	AllModels.Add(&OAuthClient{})
	AllModels.Add(&OAuthAuthorizationCode{})
	AllModels.Add(&OAuthToken{})
}

func Migrate() error {
	return AllModels.AutoMigrate(cfg.DB())
}

func Drop() error {
	return AllModels.AutoDrop(cfg.DB())
}

func InitDB() error {
	return nil
}
