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 }