add 2 new triggers, one logs player name change, second sets deleted_at | bump github.com/tribalwarshelp/shared
This commit is contained in:
parent
bf958c88b6
commit
7bca0d25e5
|
@ -35,6 +35,22 @@ const (
|
|||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql VOLATILE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION ?0.log_player_name_change()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.name <> OLD.name THEN
|
||||
INSERT INTO player_name_changes(lang_version_tag,player_id,old_name,new_name,changed_on)
|
||||
VALUES(?1,NEW.id,OLD.name,NEW.name,CURRENT_DATE)
|
||||
ON CONFLICT DO NOTHING;
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql VOLATILE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION ?0.get_old_and_new_owner_tribe_id()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
|
@ -60,6 +76,7 @@ const (
|
|||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql VOLATILE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION check_daily_growth()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
|
@ -72,6 +89,23 @@ const (
|
|||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION check_existence()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
BEGIN
|
||||
IF NEW.exist = false AND OLD.exist = true THEN
|
||||
NEW.deleted_at = now();
|
||||
END IF;
|
||||
IF NEW.exist = true THEN
|
||||
NEW.deleted_at = null;
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION check_dominance()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
|
@ -84,6 +118,7 @@ const (
|
|||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION ?0.insert_to_player_to_servers()
|
||||
RETURNS trigger AS
|
||||
$BODY$
|
||||
|
@ -104,24 +139,49 @@ const (
|
|||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE ?0.log_tribe_change();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_name_change ON ?0.players;
|
||||
CREATE TRIGGER ?0_name_change
|
||||
AFTER UPDATE
|
||||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE ?0.log_player_name_change();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_check_daily_growth ON ?0.players;
|
||||
CREATE TRIGGER ?0_check_daily_growth
|
||||
BEFORE UPDATE
|
||||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE check_daily_growth();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_check_player_existence ON ?0.players;
|
||||
CREATE TRIGGER ?0_check_player_existence
|
||||
BEFORE UPDATE
|
||||
ON ?0.players
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE check_existence();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_check_tribe_existence ON ?0.tribes;
|
||||
CREATE TRIGGER ?0_check_tribe_existence
|
||||
BEFORE UPDATE
|
||||
ON ?0.tribes
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE check_existence();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_check_dominance ON ?0.tribes;
|
||||
CREATE TRIGGER ?0_check_dominance
|
||||
BEFORE UPDATE
|
||||
ON ?0.tribes
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE check_dominance();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_update_ennoblement_old_and_new_owner_tribe_id ON ?0.ennoblements;
|
||||
CREATE TRIGGER ?0_update_ennoblement_old_and_new_owner_tribe_id
|
||||
BEFORE INSERT
|
||||
ON ?0.ennoblements
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE ?0.get_old_and_new_owner_tribe_id();
|
||||
|
||||
DROP TRIGGER IF EXISTS ?0_insert_to_player_to_servers ON ?0.players;
|
||||
CREATE TRIGGER ?0_insert_to_player_to_servers
|
||||
AFTER INSERT
|
||||
|
@ -171,6 +231,7 @@ func (h *handler) init() error {
|
|||
(*models.Server)(nil),
|
||||
(*models.LangVersion)(nil),
|
||||
(*models.PlayerToServer)(nil),
|
||||
(*models.PlayerNameChange)(nil),
|
||||
}
|
||||
|
||||
for _, model := range models {
|
||||
|
@ -185,14 +246,14 @@ func (h *handler) init() error {
|
|||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (h *handler) createSchema(key string) error {
|
||||
tx, err := h.db.WithParam("SERVER", pg.Safe(key)).Begin()
|
||||
func (h *handler) createSchema(server *models.Server) error {
|
||||
tx, err := h.db.WithParam("SERVER", pg.Safe(server.Key)).Begin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer tx.Close()
|
||||
|
||||
if _, err := tx.Exec(fmt.Sprintf("CREATE SCHEMA IF NOT EXISTS %s", key)); err != nil {
|
||||
if _, err := tx.Exec(fmt.Sprintf("CREATE SCHEMA IF NOT EXISTS %s", server.Key)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -220,7 +281,7 @@ func (h *handler) createSchema(key string) error {
|
|||
serverPGFunctions,
|
||||
serverPGTriggers,
|
||||
} {
|
||||
if _, err := tx.Exec(statement, pg.Safe(key)); err != nil {
|
||||
if _, err := tx.Exec(statement, pg.Safe(server.Key), server.LangVersionTag); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -259,18 +320,19 @@ func (h *handler) getServers() ([]*models.Server, map[string]string, error) {
|
|||
if langVersion.SpecialServers.Contains(serverKeyStr) {
|
||||
continue
|
||||
}
|
||||
if err := h.createSchema(serverKeyStr); err != nil {
|
||||
server := &models.Server{
|
||||
Key: serverKeyStr,
|
||||
Status: models.ServerStatusOpen,
|
||||
LangVersionTag: langVersion.Tag,
|
||||
LangVersion: langVersion,
|
||||
}
|
||||
if err := h.createSchema(server); err != nil {
|
||||
log.Print(errors.Wrapf(err, "Cannot create schema for %s", serverKey))
|
||||
continue
|
||||
}
|
||||
serverKeys = append(serverKeys, serverKeyStr)
|
||||
urls[serverKeyStr] = url.(string)
|
||||
servers = append(servers, &models.Server{
|
||||
Key: serverKeyStr,
|
||||
Status: models.ServerStatusOpen,
|
||||
LangVersionTag: langVersion.Tag,
|
||||
LangVersion: langVersion,
|
||||
})
|
||||
servers = append(servers, server)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
2
go.mod
2
go.mod
|
@ -8,6 +8,6 @@ require (
|
|||
github.com/joho/godotenv v1.3.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200623144748-aa834a01dce6
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200624134544-636239c5fd17
|
||||
golang.org/x/net v0.0.0-20200528225125-3c3fba18258b // indirect
|
||||
)
|
||||
|
|
2
go.sum
2
go.sum
|
@ -92,6 +92,8 @@ github.com/tribalwarshelp/shared v0.0.0-20200623082627-128bf01a6570 h1:W2cBKRRvr
|
|||
github.com/tribalwarshelp/shared v0.0.0-20200623082627-128bf01a6570/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200623144748-aa834a01dce6 h1:WZ1oxHysFtiPjHa2ADUqiGrzwcN3j0YpiVg/V2e/74o=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200623144748-aa834a01dce6/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200624134544-636239c5fd17 h1:DUMz3ROe2nYRszZuu97LVIgdPrt8QBWAVouFlrucL8c=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200624134544-636239c5fd17/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