package announcement

import (
	"context"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
	"kra/internal/plugin/announcement/initialize"
	interfaces "kra/pkg/utils/plugin/v2"
)

var _ interfaces.Plugin = (*plugin)(nil)

var Plugin = new(plugin)

type plugin struct {
	db *gorm.DB
}

// SetDB 设置数据库连接
func (p *plugin) SetDB(db *gorm.DB) {
	p.db = db
}

func (p *plugin) Register(engine *gin.Engine) {
	ctx := context.Background()
	// 如果需要配置文件，请到config.Config中填充配置结构，且到下方发放中填入其在config.yaml中的key
	// initialize.Viper()
	// 安装插件时候自动注册的api数据请到下方法.Api方法中实现
	initialize.Api(ctx, p.db)
	// 安装插件时候自动注册的api数据请到下方法.Menu方法中实现
	initialize.Menu(ctx, p.db)
	initialize.Gorm(ctx, p.db)
	initialize.Router(engine, p.db)
}
