/* * @Author: LinkLeong link@icewhale.org * @Date: 2022-07-26 18:13:22 * @LastEditors: LinkLeong * @LastEditTime: 2022-08-04 20:10:31 * @FilePath: /CasaOS/service/connections.go * @Description: * @Website: https://www.casaos.io * Copyright (c) 2022 by icewhale, All Rights Reserved. */ package service import ( "github.com/IceWhaleTech/CasaOS/service/model" model2 "github.com/IceWhaleTech/CasaOS/service/model" "gorm.io/gorm" ) type PeerService interface { GetPeerByUserAgent(ua string) (m model2.PeerDriveDBModel) GetPeerByID(id string) (m model2.PeerDriveDBModel) GetPeers() (peers []model2.PeerDriveDBModel) CreatePeer(m *model2.PeerDriveDBModel) DeletePeer(id string) } type peerStruct struct { db *gorm.DB } func (s *peerStruct) GetPeerByUserAgent(ua string) (m model2.PeerDriveDBModel) { s.db.Where("user_agent = ?", ua).First(&m) return } func (s *peerStruct) GetPeerByID(id string) (m model2.PeerDriveDBModel) { s.db.Where("id = ?", id).First(&m) return } func (s *peerStruct) GetPeers() (peers []model2.PeerDriveDBModel) { s.db.Find(&peers) return } func (s *peerStruct) CreatePeer(m *model2.PeerDriveDBModel) { var list []model.PeerDriveDBModel s.db.Order("updated desc").Find(&list) if len(list) > 10 { for _, v := range list[10:] { s.db.Where("id = ?", v.ID).Delete(&model.PeerDriveDBModel{}) } } s.db.Create(m) } func (s *peerStruct) DeletePeer(id string) { s.db.Where("id= ?", id).Delete(&model.PeerDriveDBModel{}) } func NewPeerService(db *gorm.DB) PeerService { return &peerStruct{db: db} }