83 lines
2.3 KiB
Go
83 lines
2.3 KiB
Go
package repository
|
|
|
|
import (
|
|
"zeromesh/internal/database"
|
|
"zeromesh/internal/model"
|
|
)
|
|
|
|
type NetworkRepo struct {
|
|
db *database.DB
|
|
}
|
|
|
|
func NewNetworkRepo(db *database.DB) *NetworkRepo {
|
|
return &NetworkRepo{db: db}
|
|
}
|
|
|
|
func (r *NetworkRepo) Create(network *model.Network) error {
|
|
return r.db.Create(network).Error
|
|
}
|
|
|
|
func (r *NetworkRepo) FindByNetworkID(networkID uint32) (*model.Network, error) {
|
|
var network model.Network
|
|
err := r.db.Where("network_id = ?", networkID).Preload("Members").First(&network).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &network, nil
|
|
}
|
|
|
|
func (r *NetworkRepo) List() ([]model.Network, error) {
|
|
var networks []model.Network
|
|
err := r.db.Preload("Members").Find(&networks).Error
|
|
return networks, err
|
|
}
|
|
|
|
func (r *NetworkRepo) ListByUser(userID uint) ([]model.Network, error) {
|
|
var networks []model.Network
|
|
err := r.db.Where("user_id = ?", userID).Preload("Members").Find(&networks).Error
|
|
return networks, err
|
|
}
|
|
|
|
func (r *NetworkRepo) FindByNetworkIDForUser(networkID uint32, userID uint) (*model.Network, error) {
|
|
var network model.Network
|
|
err := r.db.Where("network_id = ? AND user_id = ?", networkID, userID).Preload("Members").First(&network).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &network, nil
|
|
}
|
|
|
|
func (r *NetworkRepo) CountByUser(userID uint) (int64, error) {
|
|
var count int64
|
|
err := r.db.Model(&model.Network{}).Where("user_id = ?", userID).Count(&count).Error
|
|
return count, err
|
|
}
|
|
|
|
func (r *NetworkRepo) Update(network *model.Network) error {
|
|
return r.db.Save(network).Error
|
|
}
|
|
|
|
func (r *NetworkRepo) Delete(networkID uint32) error {
|
|
return r.db.Where("network_id = ?", networkID).Delete(&model.Network{}).Error
|
|
}
|
|
|
|
func (r *NetworkRepo) AddMember(member *model.NetworkMember) error {
|
|
return r.db.Create(member).Error
|
|
}
|
|
|
|
func (r *NetworkRepo) RemoveMember(networkID uint32, nodeID string) error {
|
|
return r.db.Where("network_id = ? AND node_id = ?", networkID, nodeID).Delete(&model.NetworkMember{}).Error
|
|
}
|
|
|
|
func (r *NetworkRepo) FindMembers(networkID uint32) ([]model.NetworkMember, error) {
|
|
var members []model.NetworkMember
|
|
err := r.db.Where("network_id = ?", networkID).Find(&members).Error
|
|
return members, err
|
|
}
|
|
|
|
func (r *NetworkRepo) Count() (int64, error) {
|
|
var count int64
|
|
err := r.db.Model(&model.Network{}).Count(&count).Error
|
|
return count, err
|
|
}
|