package v1

import (
	"database/sql"
	"time"

	"gorm.io/gorm"
)

type Group struct {
	ID uint64 `json:"id" gorm:"primary_key;AUTO_INCREMENT;column:id"`
	// 0 for custom group, 1 for department
	Type int `json:"type" gorm:"column:type"`
	// if type == 0, SourceID for lark department id, if type == 1, SourceID is same as ID
	SourceID       string         `json:"sourceID" gorm:"unique;column:sourceID;type:varchar(128)"`
	ParentSourceID string         `json:"parentSourceID" gorm:"unique;column:parentSourceID;type:varchar(128)"`
	CreatedAt      time.Time      `json:"createdAt" gorm:"column:createdAt"`
	UpdatedAt      sql.NullTime   `json:"updatedAt" gorm:"column:updatedAt"`
	DeletedAt      gorm.DeletedAt `json:"deletedAt" gorm:"column:deletedAt"`
	Name           string         `json:"name" gorm:"column:name"`
	// Users          []*User        `json:"users" gorm:"many2many:user_group;"`
}

type GroupList struct {
	Items []*Group `json:"items"`
}

func (u *Group) TableName() string {
	return "group"
}
