refactor
This commit is contained in:
parent
15bc841486
commit
b0244869d1
|
@ -285,7 +285,7 @@ func (h *handler) updateServersStats(t time.Time) error {
|
|||
servers := []*models.Server{}
|
||||
err := h.db.
|
||||
Model(&servers).
|
||||
Where("status = ? AND (stats_updated_at < ? OR stats_updated_at IS NULL)", models.ServerStatusOpen, t).
|
||||
Where("status = ? AND (stats_updated_at < ? OR stats_updated_at IS NULL)", models.ServerStatusOpen, t).
|
||||
Select()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "updateServersStats")
|
||||
|
|
|
@ -61,7 +61,7 @@ const (
|
|||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.exist = false THEN
|
||||
IF NEW.exists = false THEN
|
||||
NEW.daily_growth = 0;
|
||||
END IF;
|
||||
|
||||
|
@ -74,10 +74,10 @@ const (
|
|||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.exist = false AND OLD.exist = true THEN
|
||||
IF NEW.exists = false AND OLD.exists = true THEN
|
||||
NEW.deleted_at = now();
|
||||
END IF;
|
||||
IF NEW.exist = true THEN
|
||||
IF NEW.exists = true THEN
|
||||
NEW.deleted_at = null;
|
||||
END IF;
|
||||
|
||||
|
@ -90,7 +90,7 @@ const (
|
|||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.exist = false THEN
|
||||
IF NEW.exists = false THEN
|
||||
NEW.dominance = 0;
|
||||
END IF;
|
||||
|
||||
|
@ -99,6 +99,50 @@ const (
|
|||
$BODY$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION check_most_points_most_villages_best_rank_values()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.most_points IS null OR NEW.points > NEW.most_points THEN
|
||||
NEW.most_points = NEW.points;
|
||||
NEW.most_points_at = now();
|
||||
END IF;
|
||||
IF NEW.most_villages IS null OR NEW.total_villages > NEW.most_villages THEN
|
||||
NEW.most_villages = NEW.total_villages;
|
||||
NEW.most_villages_at = now();
|
||||
END IF;
|
||||
IF NEW.best_rank IS null OR NEW.rank > NEW.best_rank THEN
|
||||
NEW.best_rank = NEW.rank;
|
||||
NEW.best_rank_at = now();
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION update_most_points_most_villages_best_rank()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.most_points IS null OR NEW.points > OLD.most_points THEN
|
||||
NEW.most_points = NEW.points;
|
||||
NEW.most_points_at = now();
|
||||
END IF;
|
||||
IF NEW.most_villages IS null OR NEW.total_villages > OLD.most_villages THEN
|
||||
NEW.most_villages = NEW.total_villages;
|
||||
NEW.most_villages_at = now();
|
||||
END IF;
|
||||
IF NEW.best_rank IS null OR NEW.rank > OLD.best_rank THEN
|
||||
NEW.best_rank = NEW.rank;
|
||||
NEW.best_rank_at = now();
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION ?0.insert_to_player_to_servers()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
|
@ -168,5 +212,33 @@ const (
|
|||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE ?0.insert_to_player_to_servers();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_update_most_points_most_villages_best_rank ON ?0.players;
|
||||
CREATE TRIGGER ?0_update_most_points_most_villages_best_rank
|
||||
BEFORE UPDATE
|
||||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE update_most_points_most_villages_best_rank();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_check_points_villages_rank ON ?0.players;
|
||||
CREATE TRIGGER ?0_check_points_villages_rank
|
||||
BEFORE INSERT
|
||||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE check_most_points_most_villages_best_rank_values();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_update_most_points_most_villages_best_rank ON ?0.tribes;
|
||||
CREATE TRIGGER ?0_update_most_points_most_villages_best_rank
|
||||
BEFORE UPDATE
|
||||
ON ?0.tribes
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE update_most_points_most_villages_best_rank();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_check_points_villages_rank ON ?0.tribes;
|
||||
CREATE TRIGGER ?0_check_points_villages_rank
|
||||
BEFORE INSERT
|
||||
ON ?0.tribes
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE check_most_points_most_villages_best_rank_values();
|
||||
`
|
||||
)
|
||||
|
|
|
@ -122,7 +122,7 @@ func (h *updateServerDataHandler) parsePlayerLine(line []string) (*models.Player
|
|||
var err error
|
||||
ex := true
|
||||
player := &models.Player{
|
||||
Exist: &ex,
|
||||
Exists: &ex,
|
||||
}
|
||||
player.ID, err = strconv.Atoi(line[0])
|
||||
if err != nil {
|
||||
|
@ -190,7 +190,7 @@ func (h *updateServerDataHandler) parseTribeLine(line []string) (*models.Tribe,
|
|||
var err error
|
||||
ex := true
|
||||
tribe := &models.Tribe{
|
||||
Exist: &ex,
|
||||
Exists: &ex,
|
||||
}
|
||||
tribe.ID, err = strconv.Atoi(line[0])
|
||||
if err != nil {
|
||||
|
@ -531,7 +531,7 @@ func (h *updateServerDataHandler) update() error {
|
|||
Set("points = EXCLUDED.points").
|
||||
Set("all_points = EXCLUDED.all_points").
|
||||
Set("rank = EXCLUDED.rank").
|
||||
Set("exist = EXCLUDED.exist").
|
||||
Set("exists = EXCLUDED.exists").
|
||||
Set("dominance = EXCLUDED.dominance").
|
||||
Apply(attachODSetClauses).
|
||||
Insert(); err != nil {
|
||||
|
@ -544,7 +544,7 @@ func (h *updateServerDataHandler) update() error {
|
|||
}
|
||||
if _, err := tx.Model(&models.Tribe{}).
|
||||
Where("id NOT IN (?)", pg.In(ids)).
|
||||
Set("exist = false").
|
||||
Set("exists = false").
|
||||
Update(); err != nil && err != pg.ErrNoRows {
|
||||
return errors.Wrap(err, "cannot update not exist tribes")
|
||||
}
|
||||
|
@ -583,7 +583,7 @@ func (h *updateServerDataHandler) update() error {
|
|||
Set("total_villages = EXCLUDED.total_villages").
|
||||
Set("points = EXCLUDED.points").
|
||||
Set("rank = EXCLUDED.rank").
|
||||
Set("exist = EXCLUDED.exist").
|
||||
Set("exists = EXCLUDED.exists").
|
||||
Set("tribe_id = EXCLUDED.tribe_id").
|
||||
Set("daily_growth = EXCLUDED.daily_growth").
|
||||
Apply(attachODSetClauses).
|
||||
|
@ -597,7 +597,7 @@ func (h *updateServerDataHandler) update() error {
|
|||
}
|
||||
if _, err := tx.Model(&models.Player{}).
|
||||
Where("id NOT IN (?)", pg.In(ids)).
|
||||
Set("exist = false").
|
||||
Set("exists = false").
|
||||
Update(); err != nil && err != pg.ErrNoRows {
|
||||
return errors.Wrap(err, "cannot update not exist players")
|
||||
}
|
||||
|
|
|
@ -15,9 +15,10 @@ type updateServerHistoryHandler struct {
|
|||
|
||||
func (h *updateServerHistoryHandler) update() error {
|
||||
players := []*models.Player{}
|
||||
if err := h.db.Model(&players).Where("exist = true").Select(); err != nil {
|
||||
if err := h.db.Model(&players).Where("exists = true").Select(); err != nil {
|
||||
return errors.Wrap(err, "cannot load players")
|
||||
}
|
||||
|
||||
ph := []*models.PlayerHistory{}
|
||||
for _, player := range players {
|
||||
ph = append(ph, &models.PlayerHistory{
|
||||
|
@ -31,7 +32,7 @@ func (h *updateServerHistoryHandler) update() error {
|
|||
}
|
||||
|
||||
tribes := []*models.Tribe{}
|
||||
if err := h.db.Model(&tribes).Where("exist = true").Select(); err != nil {
|
||||
if err := h.db.Model(&tribes).Where("exists = true").Select(); err != nil {
|
||||
return errors.Wrap(err, "cannot load tribes")
|
||||
}
|
||||
th := []*models.TribeHistory{}
|
||||
|
|
|
@ -14,21 +14,21 @@ type updateServerStatsHandler struct {
|
|||
}
|
||||
|
||||
func (h *updateServerStatsHandler) prepare() (*models.ServerStats, error) {
|
||||
activePlayers, err := h.db.Model(&models.Player{}).Where("exist = true").Count()
|
||||
activePlayers, err := h.db.Model(&models.Player{}).Where("exists = true").Count()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "cannot count active players")
|
||||
}
|
||||
inactivePlayers, err := h.db.Model(&models.Player{}).Where("exist = false").Count()
|
||||
inactivePlayers, err := h.db.Model(&models.Player{}).Where("exists = false").Count()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "cannot count inactive players")
|
||||
}
|
||||
players := activePlayers + inactivePlayers
|
||||
|
||||
activeTribes, err := h.db.Model(&models.Tribe{}).Where("exist = true").Count()
|
||||
activeTribes, err := h.db.Model(&models.Tribe{}).Where("exists = true").Count()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "cannot count active tribes")
|
||||
}
|
||||
inactiveTribes, err := h.db.Model(&models.Tribe{}).Where("exist = false").Count()
|
||||
inactiveTribes, err := h.db.Model(&models.Tribe{}).Where("exists = false").Count()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "cannot count inactive tribes")
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@ func (h *vacuumServerDBHandler) vacuum() error {
|
|||
}
|
||||
defer tx.Close()
|
||||
|
||||
withNotExitedPlayers := h.db.Model(&models.Player{}).Where("exist = false")
|
||||
withNotExitedTribes := h.db.Model(&models.Tribe{}).Where("exist = false")
|
||||
withNotExitedPlayers := h.db.Model(&models.Player{}).Where("exists = false")
|
||||
withNotExitedTribes := h.db.Model(&models.Tribe{}).Where("exists = false")
|
||||
|
||||
_, err = tx.Model(&models.PlayerHistory{}).
|
||||
With("players", withNotExitedPlayers).
|
||||
|
|
2
go.mod
2
go.mod
|
@ -9,7 +9,7 @@ require (
|
|||
github.com/pkg/errors v0.9.1
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/segmentio/encoding v0.1.14 // indirect
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200625103607-9768e416aea9
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200625120510-6d18ee334662
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
|
||||
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 // indirect
|
||||
google.golang.org/grpc v1.30.0 // indirect
|
||||
|
|
4
go.sum
4
go.sum
|
@ -92,8 +92,8 @@ github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H
|
|||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo=
|
||||
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200625103607-9768e416aea9 h1:CHeznuISvmlW1pYpnA7Bz3nVdQ6kc9ORtGtIKEKH8M8=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200625103607-9768e416aea9/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200625120510-6d18ee334662 h1:GBCpdHQsOrbz7xz+bTsZlFQJzKi1wsxgAeVFsNIZiH4=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200625120510-6d18ee334662/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/vmihailenco/bufpool v0.1.5/go.mod h1:fL9i/PRTuS7AELqAHwSU1Zf1c70xhkhGe/cD5ud9pJk=
|
||||
github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94=
|
||||
github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ=
|
||||
|
|
Reference in New Issue