This commit is contained in:
parent
0683cd7b32
commit
84b19fb14e
@ -3,6 +3,7 @@ package database
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.eeqj.de/sneak/feta/instance"
|
||||
"github.com/google/uuid"
|
||||
"github.com/jinzhu/gorm"
|
||||
|
||||
@ -12,12 +13,12 @@ import (
|
||||
// NB that when you add a model below you must add it to this list!
|
||||
|
||||
func (m *Manager) doMigrations() {
|
||||
m.db.AutoMigrate(&instance{})
|
||||
m.db.AutoMigrate(&apinstance{})
|
||||
}
|
||||
|
||||
type instance struct {
|
||||
type apinstance struct {
|
||||
gorm.Model
|
||||
Identifier uuid.UUID
|
||||
ID uuid.UUID `gorm:"type:uuid;primary_key;"`
|
||||
ErrorCount uint
|
||||
SuccessCount uint
|
||||
HighestID int
|
||||
@ -32,6 +33,9 @@ type instance struct {
|
||||
ServerImplementationString string
|
||||
}
|
||||
|
||||
func (m *Manager) ListInstances() {
|
||||
func (m *Manager) ListInstances() ([]*instance.Instance, error) {
|
||||
output := make([]*instance.Instance, 0)
|
||||
// FIXME have this produce a list of Instance
|
||||
|
||||
return output, nil
|
||||
}
|
||||
|
@ -23,6 +23,10 @@ func New() *Manager {
|
||||
}
|
||||
|
||||
func (m *Manager) init() {
|
||||
m.db.LogMode(false)
|
||||
if viper.GetBool("Debug") {
|
||||
m.db.LogMode(true)
|
||||
}
|
||||
m.open()
|
||||
}
|
||||
|
||||
|
@ -11,16 +11,17 @@ import (
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
//import "github.com/gin-gonic/gin"
|
||||
|
||||
// LogReportInterval defines how long between logging internal
|
||||
// stats/reporting for user supervision
|
||||
var LogReportInterval = time.Second * 10
|
||||
// conform for storing toots
|
||||
type DatabaseStorage interface {
|
||||
ListInstances() ([]*instance.Instance, error)
|
||||
StoreInstances([]*instance.Instance) error
|
||||
}
|
||||
|
||||
// InstanceManager is the main data structure for the goroutine that manages
|
||||
// the list of all known instances, fed by the locator
|
||||
type InstanceManager struct {
|
||||
mu sync.Mutex
|
||||
db DatabaseStorage
|
||||
instances map[instance.Hostname]*instance.Instance
|
||||
newInstanceNotifications chan instance.Hostname
|
||||
tootDestination chan *toot.Toot
|
||||
@ -89,7 +90,7 @@ func (im *InstanceManager) Manage() {
|
||||
log.Info().Msg("InstanceManager tick")
|
||||
im.managerLoop()
|
||||
time.Sleep(1 * time.Second)
|
||||
if time.Now().After(x.Add(LogReportInterval)) {
|
||||
if time.Now().After(x.Add(viper.GetDuration("LogReportInterval"))) {
|
||||
x = time.Now()
|
||||
im.logInstanceReport()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user