Files
zeromesh/internal/repository/network.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
}