alpha version
This commit is contained in:
92
models/groups.go
Normal file
92
models/groups.go
Normal file
@ -0,0 +1,92 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type Group struct {
|
||||
bun.BaseModel `bun:"table:groups"`
|
||||
UserID int64
|
||||
GroupID int64 `bun:",pk,autoincrement"`
|
||||
Name string `bun:"name,type:text" json:"name" yaml:"name"`
|
||||
TelegramChatID int64 `bun:"telegram_chat_id,type:bigint" json:"telegram_chat_id" yaml:"telegram_chat_id"`
|
||||
Users Users `bun:"m2m:group_to_users,join:Group=User"`
|
||||
}
|
||||
|
||||
type GroupToUser struct {
|
||||
GroupID int64 `bun:",pk"`
|
||||
Group *Group `bun:"rel:belongs-to,join:group_id=user_id"`
|
||||
UserID int64 `bun:",pk"`
|
||||
User *User `bun:"rel:belongs-to,join:user_id=group_id"`
|
||||
}
|
||||
|
||||
func NewGroup(j []byte) (*Group, error) {
|
||||
g := &Group{}
|
||||
return g, nil
|
||||
}
|
||||
|
||||
// Add .
|
||||
func (g *Group) Add(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewInsert().Model(g).Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Update .
|
||||
func (g *Group) Update(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewUpdate().Model(g).WherePK().Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remove .
|
||||
func (g *Group) Remove(db *bun.DB, ctx context.Context) error {
|
||||
_, err := db.NewDelete().Model(g).WherePK().Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UserAdd .
|
||||
func (g *Group) UserAdd(db *bun.DB, ctx context.Context, u int64) error {
|
||||
_, err := db.NewInsert().Model(g).Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UserList .
|
||||
func (g *Group) UserList(db *bun.DB, ctx context.Context) (Users, error) {
|
||||
var users Users
|
||||
_, err := db.NewSelect().Model(&users).ScanAndCount(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return users, nil
|
||||
}
|
||||
|
||||
// UserRemove .
|
||||
func (g *Group) UserRemove(db *bun.DB, ctx context.Context, u int) error {
|
||||
_, err := db.NewInsert().Model(g).Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GroupExists(db *bun.DB, ctx context.Context, tid int64) bool {
|
||||
exists, err := db.NewSelect().Model((*Group)(nil)).Where("telegram_chat_id = ?", tid).Exists(ctx)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return exists
|
||||
}
|
Reference in New Issue
Block a user