initial: ZeroTier-like P2P mesh VPN server with multi-tenant Web UI
This commit is contained in:
82
internal/repository/network.go
Normal file
82
internal/repository/network.go
Normal file
@@ -0,0 +1,82 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user