Loading main.go +17 −21 Original line number Diff line number Diff line Loading @@ -15,31 +15,38 @@ package main import ( "database/sql" "fmt" "math/rand" "net/http" "net/url" "os" "os/signal" "runtime" "syscall" "time" "go.uber.org/zap" "database/sql" "net/url" "github.com/golang/protobuf/jsonpb" "github.com/heroiclabs/nakama/migrations" "github.com/heroiclabs/nakama/server" "math/rand" "github.com/golang/protobuf/jsonpb" _ "github.com/lib/pq" "go.uber.org/zap" ) var ( version string = "2.0.0" commitID string = "dev" // Shared utility components. jsonpbMarshaler = &jsonpb.Marshaler{ EnumsAsInts: true, EmitDefaults: false, Indent: "", OrigName: false, } jsonpbUnmarshaler = &jsonpb.Unmarshaler{ AllowUnknownFields: false, } ) func main() { Loading Loading @@ -76,17 +83,6 @@ func main() { // Check migration status and log if the schema has diverged. migrations.StartupCheck(multiLogger, db) // Shared utility components. jsonpbMarshaler := &jsonpb.Marshaler{ EnumsAsInts: true, EmitDefaults: false, Indent: "", OrigName: false, } jsonpbUnmarshaler := &jsonpb.Unmarshaler{ AllowUnknownFields: false, } // Start up server components. registry := server.NewSessionRegistry() tracker := server.StartLocalTracker(jsonLogger, registry, jsonpbMarshaler, config.GetName()) Loading @@ -96,7 +92,7 @@ func main() { multiLogger.Fatal("Failed initializing runtime modules", zap.Error(err)) } pipeline := server.NewPipeline(config, db, registry, tracker, router, runtimePool) apiServer := server.StartApiServer(jsonLogger, db, config, registry, tracker, pipeline, runtimePool, jsonpbMarshaler, jsonpbUnmarshaler) apiServer := server.StartApiServer(jsonLogger, db, jsonpbMarshaler, jsonpbUnmarshaler, config, registry, tracker, router, pipeline, runtimePool) // Respect OS stop signals. c := make(chan os.Signal, 2) Loading migrations/migrations-packr.go +1 −1 Original line number Diff line number Diff line Loading @@ -9,5 +9,5 @@ import "github.com/gobuffalo/packr" // Go binary. You can use the "packr clean" command to clean up this, // and any other packr generated files. func init() { packr.PackJSONBytes("./sql", "20180103142001_initial_schema.sql", "\"H4sIAAAAAAAA/6RXXZPaNhR951fc2YcGp+ZjSdJmsm1mHPAmnhCTYpNknxghX4y6tuRKMizt9L93ZBuwgWXTlslDLB2d+6Gje+/2nrfgOQxFtpUsXmkY9K9fQ7hC8Mk9SQk4uV4JqVpQ4MaMIlcYQc4jlKBXCE5G6Ap3OzZ8QamY4DDo9qFtAFfV1pV1Yyi2IoeUbIELDblC0CumYMkSBHygmGlgHKhIs4QRThE2TK8KOxVL13DcVRxioQnjQICKbAtiWQcC0ZXTK62zN73eZrPpksLZrpBxLylhqjf2hq4fuJ1Bt18dmPEElQKJf+RMYgSLLZAsSxgliwQhIRsQEkgsESPQwji8kUwzHtugxFJviERDEzGlJVvkupGvnXtMNQCCA+Fw5QTgBVfwzgm8wDYkX73ww2QWwldnOnX80HMDmExhOPFHXuhN/AAmt+D4d/DR80c2INMrlIAPmTQRCAnMZBKjIm0BYsOFpShdUhlStmQUEsLjnMQIsVij5IzHkKFMmTI3qoDwyNAkLGWa6GLpJC5jqNdqdTrwY8piSTTCLGsNp64TuhA678YueLfgT0Jwv3lBGBgNSAXtFgDA56n3yZnewUf3DtossuxWscwiqP1mM290+DJM/mw8tgukIeMkxXLvizMdfnCm7evBawtMzoJw6nh+WNqc78Dze9zCzPd+m7lHdBFTWUK285JyRzd49coq98maaCLnuUzq5g77nU4hPvWm19NCJKrLUC8L9a10mvQWNHv5cwE0iZ9rEh/5bdyGkXvrzMYhPEP+rKRNBC3S30QXZo1J7MZduAoIh1tJOGWKChuGzlVxVrMU/xQcL579TEo9hCxFaM8C+AGGhJOIWCVJippERJOS5N1d6Dr7C9m7+9ffz2D4wR1+hHaCPNar9u6YBb/Ai0G/37eO8o0pYcmeqe4cVBdU4jKi1EbI6Jz9pskd8mCyZFgSigsh7ueFtppCqVuKhYgTnFcKvIAjKVLkGqXBPo5TGkm6o7uAo7nSIn3aLkYxzqnIuTZfRttwchP9XU5q4Le/wkn2qUSicW4UYrLqva/RVQx1yNtThjyLnmKoQ84wrFGy5fYiQx1ShnEI9OT5mopdsZ0la0AeY2tZN62nStg8wjWj+GghM6u3k6nrvffL1eIQiyyYurfu1PWHblULC7x5i+FkNHkDEx9G7tgNXRg6wdAZuUdFsaGN02poJNSomP8qKKOYcyEpkUtqnoUNShONNmRCMVOTzoW6R/+XYE/YIlSa8aIA/p/87Z066irNFO7CqpK319AeZQzNzERkmqkSUoOQpiUKDlJs1JlncSD5vifRjPcxR4trOLz94JMzHhsrZ96GcXkpGfKo3bdsYHzNNLav9/+N2gPLhkUi6D1G7ReWDREmaNZfWjYQSVdsjVH7lVUmsuqcdU0cXdFTUuNCm3ZT9rRLD6g5CByPAueGgXntyGW0yhe/I9X73Wb3OUZTwTXyA7rZgy52weqo6UjXP51pglREWHdzf5XHbpefnQ74GBPN1ghrkuSogEiEYKs0piBRoVwX85+JEc24dsiJyYgNj/4M9Ww8LqRd8aWoFIlRnWkYxxX2e5qGEUanAwlTuqECVdgkxRWCXhFdxGT+ZKikaEZbfMjMeF6UIGnGb1hKkQKBmK2RgzeCNs2lEtLq7tTn+SP32wX1zSvNlP8eTPFoirPat4FFle/7MXckNrw1mk4+HzR+xsLNeci+2l7aL1vMBYS6af0TAAD//0vLM27QDQAA\"") packr.PackJSONBytes("./sql", "20180103142001_initial_schema.sql", "\"H4sIAAAAAAAA/6RWXXPaOBe+51ecycUb3NcBkra7nWa3M65xWk+pyWLTbq4YIR9sbWzJlWQou7P/fUe2AZuQZD+4wtKj53zo0Tln+KIHL8AVxVayJNVwNbp8A1GKEJB7khNwSp0KqXpQ4SaMIlcYQ8ljlKBTBKcgNMXdjg1fUComOFwNRtA3gLNm68y6NhRbUUJOtsCFhlIh6JQpWLEMAb9TLDQwDlTkRcYIpwgbptPKTsMyMBx3DYdYasI4EKCi2IJYtYFAdON0qnXxdjjcbDYDUjk7EDIZZjVMDSe+6wWhd3E1GDUH5jxDpUDit5JJjGG5BVIUGaNkmSFkZANCAkkkYgxaGIc3kmnGExuUWOkNkWhoYqa0ZMtSd/K1c4+pDkBwIBzOnBD88AzeO6Ef2obkqx99nM4j+OrMZk4Q+V4I0xm402DsR/40CGF6A05wB5/8YGwDMp2iBPxeSBOBkMBMJjGu0hYidlxYidolVSBlK0YhIzwpSYKQiDVKzngCBcqcKXOjCgiPDU3GcqaJrpYexGUMDXu9iwv4f84SSTTCvOi5M8+JPIic9xMP/BsIphF4v/phFBoNSAX9HgDA7cz/7Mzu4JN3B30WW3avWmYxtH7zuT8+fBmmYD6Z2BXSkHGSY733xZm5H51Z//LqjQUmZ2E0c/wgqm0uduDFPW5hHvi/zL0jupipIiPbRU25o7t6/dqq98maaCIXpcza5g77FxeV+NTb4VALkakBQ72q1JfqPBsuafHqxwpoEr/QJDny27gNY+/GmU8iOEd+XtNmglbp76Irs8YkDpIBnIWEw40knDJFhQ2uc1ad1SzH3wXHJ8/ekloPEcsR+vMQ/gcu4SQmVk2SoyYx0aQmeX8Xec7+Qvbu/vHnObgfPfcT9DPkiU77u2MW/AQvr0ajkXWUb8wJy/ZMbeeguaAaVxClNkLGp+x3Te6QB5M1w4pQXApxv6i01RVK21IiRJLholHgEziSI0WuURrs4zilkeQ7uidwtFRa5M/bxTjBBRUl1+bLaBse3MRol5MW+N3P8CD7VCLRuDAKMVn1P7ToGoY25N1DhrKIn2NoQ04wrFGy1fZJhjakDuMQ6IPnayp2w3aSrAN5jK1nXfeeK2GLGNeM4qOFzKzeTGee/yGoV6tDLLZg5t14My9wvaYWVnjzFqPpePoWpgGMvYkXeeA6oeuMvaOi2NHGw2poJNSpmP8oKKOYUyEpUUpqnoUNShONNhRCMVOTToW6R/+bYB+wxag041UB/C/52zt11FW6KdyF1SRvr6E9yhiam4nINFMlpAYhTUsUHKTYqBPP4kDy955EN97HHK2u4fD2w8/OZGKsnHgbxuWVZMjj/siygfE109i/3P+N+1eWDctM0HuM+y8tG2LM0Ky/smwgkqZsjXH/tVUnsumcbU0cXdFzUuNCm3ZT97QTamt0bHcqlBO6Nuyu+lbiCqWZ1cwVmLmlvgWVijKLISVrhCUih7EXurAsNbiC3ktBaHqu4FuJcguEk2yrUJrJzAynNMO1maW4KJN0cGIQOR5FOiNGO6YFix+fMXaP9DHOo2sul78h1fvdbo88RlPBNfIDutspn+zVzVHTNy9/ONGqqYix7eZecMdu158XFxBgQjRbI6xJVqICIhHUVmnMQaJCuca4DhHNTHlIiUmIDY/+DPN8MqnfX02Xo1IkQXWiqx23gec7WyXe9jg7FhveG8+mtwctn9Dx9WnIvqo+tV+3kicQ6rr3VwAAAP//T8C4JbgNAAA=\"") } migrations/sql/20180103142001_initial_schema.sql +5 −8 Original line number Diff line number Diff line Loading @@ -64,19 +64,16 @@ CREATE TABLE IF NOT EXISTS user_edge ( ); CREATE TABLE IF NOT EXISTS notification ( PRIMARY KEY (id), id UUID NOT NULL, PRIMARY KEY (user_id, create_time ASC, id), -- Preferred sorting order should have been DESC but Cockroach's query analyser is not clever enough. id UUID CONSTRAINT notification_id_key UNIQUE NOT NULL, user_id UUID NOT NULL, subject VARCHAR(255) NOT NULL, content BYTEA DEFAULT '{}' CHECK (length(content) < 16000) NOT NULL, code SMALLINT NOT NULL, -- Negative values are System reserved. sender_id UUID, -- NULL for System messages create_time BIGINT CHECK (create_time > 0) NOT NULL, code SMALLINT NOT NULL, -- Negative values are system reserved sender_id UUID, -- NULL for system messages create_time BIGINT CHECK (create_time > 0) NOT NULL ); -- list notifications for a user that are not deleted or expired, starting from a given ID (cursor). CREATE INDEX IF NOT EXISTS notification_user_id_id_idx ON notification (user_id, id); -- +migrate Down DROP TABLE IF EXISTS notification; DROP TABLE IF EXISTS user_edge; Loading server/api.go +5 −1 Original line number Diff line number Diff line Loading @@ -51,11 +51,13 @@ type ApiServer struct { db *sql.DB config Config runtimePool *RuntimePool tracker Tracker router MessageRouter grpcServer *grpc.Server grpcGatewayServer *http.Server } func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, registry *SessionRegistry, tracker Tracker, pipeline *pipeline, runtimePool *RuntimePool, jsonpbMarshaler *jsonpb.Marshaler, jsonpbUnmarshaler *jsonpb.Unmarshaler) *ApiServer { func StartApiServer(logger *zap.Logger, db *sql.DB, jsonpbMarshaler *jsonpb.Marshaler, jsonpbUnmarshaler *jsonpb.Unmarshaler, config Config, registry *SessionRegistry, tracker Tracker, router MessageRouter, pipeline *pipeline, runtimePool *RuntimePool) *ApiServer { grpcServer := grpc.NewServer( grpc.StatsHandler(ocgrpc.NewServerStatsHandler()), grpc.UnaryInterceptor(SecurityInterceptorFunc(logger, config)), Loading @@ -66,6 +68,8 @@ func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, registry *Ses db: db, config: config, runtimePool: runtimePool, tracker: tracker, router: router, grpcServer: grpcServer, } Loading server/api_authenticate.go +7 −6 Original line number Diff line number Diff line Loading @@ -15,15 +15,16 @@ package server import ( "golang.org/x/net/context" "github.com/heroiclabs/nakama/api" "regexp" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "math/rand" "regexp" "strings" "time" "github.com/dgrijalva/jwt-go" "strings" "github.com/heroiclabs/nakama/api" "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) var ( Loading Loading
main.go +17 −21 Original line number Diff line number Diff line Loading @@ -15,31 +15,38 @@ package main import ( "database/sql" "fmt" "math/rand" "net/http" "net/url" "os" "os/signal" "runtime" "syscall" "time" "go.uber.org/zap" "database/sql" "net/url" "github.com/golang/protobuf/jsonpb" "github.com/heroiclabs/nakama/migrations" "github.com/heroiclabs/nakama/server" "math/rand" "github.com/golang/protobuf/jsonpb" _ "github.com/lib/pq" "go.uber.org/zap" ) var ( version string = "2.0.0" commitID string = "dev" // Shared utility components. jsonpbMarshaler = &jsonpb.Marshaler{ EnumsAsInts: true, EmitDefaults: false, Indent: "", OrigName: false, } jsonpbUnmarshaler = &jsonpb.Unmarshaler{ AllowUnknownFields: false, } ) func main() { Loading Loading @@ -76,17 +83,6 @@ func main() { // Check migration status and log if the schema has diverged. migrations.StartupCheck(multiLogger, db) // Shared utility components. jsonpbMarshaler := &jsonpb.Marshaler{ EnumsAsInts: true, EmitDefaults: false, Indent: "", OrigName: false, } jsonpbUnmarshaler := &jsonpb.Unmarshaler{ AllowUnknownFields: false, } // Start up server components. registry := server.NewSessionRegistry() tracker := server.StartLocalTracker(jsonLogger, registry, jsonpbMarshaler, config.GetName()) Loading @@ -96,7 +92,7 @@ func main() { multiLogger.Fatal("Failed initializing runtime modules", zap.Error(err)) } pipeline := server.NewPipeline(config, db, registry, tracker, router, runtimePool) apiServer := server.StartApiServer(jsonLogger, db, config, registry, tracker, pipeline, runtimePool, jsonpbMarshaler, jsonpbUnmarshaler) apiServer := server.StartApiServer(jsonLogger, db, jsonpbMarshaler, jsonpbUnmarshaler, config, registry, tracker, router, pipeline, runtimePool) // Respect OS stop signals. c := make(chan os.Signal, 2) Loading
migrations/migrations-packr.go +1 −1 Original line number Diff line number Diff line Loading @@ -9,5 +9,5 @@ import "github.com/gobuffalo/packr" // Go binary. You can use the "packr clean" command to clean up this, // and any other packr generated files. func init() { packr.PackJSONBytes("./sql", "20180103142001_initial_schema.sql", "\"H4sIAAAAAAAA/6RXXZPaNhR951fc2YcGp+ZjSdJmsm1mHPAmnhCTYpNknxghX4y6tuRKMizt9L93ZBuwgWXTlslDLB2d+6Gje+/2nrfgOQxFtpUsXmkY9K9fQ7hC8Mk9SQk4uV4JqVpQ4MaMIlcYQc4jlKBXCE5G6Ap3OzZ8QamY4DDo9qFtAFfV1pV1Yyi2IoeUbIELDblC0CumYMkSBHygmGlgHKhIs4QRThE2TK8KOxVL13DcVRxioQnjQICKbAtiWQcC0ZXTK62zN73eZrPpksLZrpBxLylhqjf2hq4fuJ1Bt18dmPEElQKJf+RMYgSLLZAsSxgliwQhIRsQEkgsESPQwji8kUwzHtugxFJviERDEzGlJVvkupGvnXtMNQCCA+Fw5QTgBVfwzgm8wDYkX73ww2QWwldnOnX80HMDmExhOPFHXuhN/AAmt+D4d/DR80c2INMrlIAPmTQRCAnMZBKjIm0BYsOFpShdUhlStmQUEsLjnMQIsVij5IzHkKFMmTI3qoDwyNAkLGWa6GLpJC5jqNdqdTrwY8piSTTCLGsNp64TuhA678YueLfgT0Jwv3lBGBgNSAXtFgDA56n3yZnewUf3DtossuxWscwiqP1mM290+DJM/mw8tgukIeMkxXLvizMdfnCm7evBawtMzoJw6nh+WNqc78Dze9zCzPd+m7lHdBFTWUK285JyRzd49coq98maaCLnuUzq5g77nU4hPvWm19NCJKrLUC8L9a10mvQWNHv5cwE0iZ9rEh/5bdyGkXvrzMYhPEP+rKRNBC3S30QXZo1J7MZduAoIh1tJOGWKChuGzlVxVrMU/xQcL579TEo9hCxFaM8C+AGGhJOIWCVJippERJOS5N1d6Dr7C9m7+9ffz2D4wR1+hHaCPNar9u6YBb/Ai0G/37eO8o0pYcmeqe4cVBdU4jKi1EbI6Jz9pskd8mCyZFgSigsh7ueFtppCqVuKhYgTnFcKvIAjKVLkGqXBPo5TGkm6o7uAo7nSIn3aLkYxzqnIuTZfRttwchP9XU5q4Le/wkn2qUSicW4UYrLqva/RVQx1yNtThjyLnmKoQ84wrFGy5fYiQx1ShnEI9OT5mopdsZ0la0AeY2tZN62nStg8wjWj+GghM6u3k6nrvffL1eIQiyyYurfu1PWHblULC7x5i+FkNHkDEx9G7tgNXRg6wdAZuUdFsaGN02poJNSomP8qKKOYcyEpkUtqnoUNShONNmRCMVOTzoW6R/+XYE/YIlSa8aIA/p/87Z066irNFO7CqpK319AeZQzNzERkmqkSUoOQpiUKDlJs1JlncSD5vifRjPcxR4trOLz94JMzHhsrZ96GcXkpGfKo3bdsYHzNNLav9/+N2gPLhkUi6D1G7ReWDREmaNZfWjYQSVdsjVH7lVUmsuqcdU0cXdFTUuNCm3ZT9rRLD6g5CByPAueGgXntyGW0yhe/I9X73Wb3OUZTwTXyA7rZgy52weqo6UjXP51pglREWHdzf5XHbpefnQ74GBPN1ghrkuSogEiEYKs0piBRoVwX85+JEc24dsiJyYgNj/4M9Ww8LqRd8aWoFIlRnWkYxxX2e5qGEUanAwlTuqECVdgkxRWCXhFdxGT+ZKikaEZbfMjMeF6UIGnGb1hKkQKBmK2RgzeCNs2lEtLq7tTn+SP32wX1zSvNlP8eTPFoirPat4FFle/7MXckNrw1mk4+HzR+xsLNeci+2l7aL1vMBYS6af0TAAD//0vLM27QDQAA\"") packr.PackJSONBytes("./sql", "20180103142001_initial_schema.sql", "\"H4sIAAAAAAAA/6RWXXPaOBe+51ecycUb3NcBkra7nWa3M65xWk+pyWLTbq4YIR9sbWzJlWQou7P/fUe2AZuQZD+4wtKj53zo0Tln+KIHL8AVxVayJNVwNbp8A1GKEJB7khNwSp0KqXpQ4SaMIlcYQ8ljlKBTBKcgNMXdjg1fUComOFwNRtA3gLNm68y6NhRbUUJOtsCFhlIh6JQpWLEMAb9TLDQwDlTkRcYIpwgbptPKTsMyMBx3DYdYasI4EKCi2IJYtYFAdON0qnXxdjjcbDYDUjk7EDIZZjVMDSe+6wWhd3E1GDUH5jxDpUDit5JJjGG5BVIUGaNkmSFkZANCAkkkYgxaGIc3kmnGExuUWOkNkWhoYqa0ZMtSd/K1c4+pDkBwIBzOnBD88AzeO6Ef2obkqx99nM4j+OrMZk4Q+V4I0xm402DsR/40CGF6A05wB5/8YGwDMp2iBPxeSBOBkMBMJjGu0hYidlxYidolVSBlK0YhIzwpSYKQiDVKzngCBcqcKXOjCgiPDU3GcqaJrpYexGUMDXu9iwv4f84SSTTCvOi5M8+JPIic9xMP/BsIphF4v/phFBoNSAX9HgDA7cz/7Mzu4JN3B30WW3avWmYxtH7zuT8+fBmmYD6Z2BXSkHGSY733xZm5H51Z//LqjQUmZ2E0c/wgqm0uduDFPW5hHvi/zL0jupipIiPbRU25o7t6/dqq98maaCIXpcza5g77FxeV+NTb4VALkakBQ72q1JfqPBsuafHqxwpoEr/QJDny27gNY+/GmU8iOEd+XtNmglbp76Irs8YkDpIBnIWEw40knDJFhQ2uc1ad1SzH3wXHJ8/ekloPEcsR+vMQ/gcu4SQmVk2SoyYx0aQmeX8Xec7+Qvbu/vHnObgfPfcT9DPkiU77u2MW/AQvr0ajkXWUb8wJy/ZMbeeguaAaVxClNkLGp+x3Te6QB5M1w4pQXApxv6i01RVK21IiRJLholHgEziSI0WuURrs4zilkeQ7uidwtFRa5M/bxTjBBRUl1+bLaBse3MRol5MW+N3P8CD7VCLRuDAKMVn1P7ToGoY25N1DhrKIn2NoQ04wrFGy1fZJhjakDuMQ6IPnayp2w3aSrAN5jK1nXfeeK2GLGNeM4qOFzKzeTGee/yGoV6tDLLZg5t14My9wvaYWVnjzFqPpePoWpgGMvYkXeeA6oeuMvaOi2NHGw2poJNSpmP8oKKOYUyEpUUpqnoUNShONNhRCMVOTToW6R/+bYB+wxag041UB/C/52zt11FW6KdyF1SRvr6E9yhiam4nINFMlpAYhTUsUHKTYqBPP4kDy955EN97HHK2u4fD2w8/OZGKsnHgbxuWVZMjj/siygfE109i/3P+N+1eWDctM0HuM+y8tG2LM0Ky/smwgkqZsjXH/tVUnsumcbU0cXdFzUuNCm3ZT97QTamt0bHcqlBO6Nuyu+lbiCqWZ1cwVmLmlvgWVijKLISVrhCUih7EXurAsNbiC3ktBaHqu4FuJcguEk2yrUJrJzAynNMO1maW4KJN0cGIQOR5FOiNGO6YFix+fMXaP9DHOo2sul78h1fvdbo88RlPBNfIDutspn+zVzVHTNy9/ONGqqYix7eZecMdu158XFxBgQjRbI6xJVqICIhHUVmnMQaJCuca4DhHNTHlIiUmIDY/+DPN8MqnfX02Xo1IkQXWiqx23gec7WyXe9jg7FhveG8+mtwctn9Dx9WnIvqo+tV+3kicQ6rr3VwAAAP//T8C4JbgNAAA=\"") }
migrations/sql/20180103142001_initial_schema.sql +5 −8 Original line number Diff line number Diff line Loading @@ -64,19 +64,16 @@ CREATE TABLE IF NOT EXISTS user_edge ( ); CREATE TABLE IF NOT EXISTS notification ( PRIMARY KEY (id), id UUID NOT NULL, PRIMARY KEY (user_id, create_time ASC, id), -- Preferred sorting order should have been DESC but Cockroach's query analyser is not clever enough. id UUID CONSTRAINT notification_id_key UNIQUE NOT NULL, user_id UUID NOT NULL, subject VARCHAR(255) NOT NULL, content BYTEA DEFAULT '{}' CHECK (length(content) < 16000) NOT NULL, code SMALLINT NOT NULL, -- Negative values are System reserved. sender_id UUID, -- NULL for System messages create_time BIGINT CHECK (create_time > 0) NOT NULL, code SMALLINT NOT NULL, -- Negative values are system reserved sender_id UUID, -- NULL for system messages create_time BIGINT CHECK (create_time > 0) NOT NULL ); -- list notifications for a user that are not deleted or expired, starting from a given ID (cursor). CREATE INDEX IF NOT EXISTS notification_user_id_id_idx ON notification (user_id, id); -- +migrate Down DROP TABLE IF EXISTS notification; DROP TABLE IF EXISTS user_edge; Loading
server/api.go +5 −1 Original line number Diff line number Diff line Loading @@ -51,11 +51,13 @@ type ApiServer struct { db *sql.DB config Config runtimePool *RuntimePool tracker Tracker router MessageRouter grpcServer *grpc.Server grpcGatewayServer *http.Server } func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, registry *SessionRegistry, tracker Tracker, pipeline *pipeline, runtimePool *RuntimePool, jsonpbMarshaler *jsonpb.Marshaler, jsonpbUnmarshaler *jsonpb.Unmarshaler) *ApiServer { func StartApiServer(logger *zap.Logger, db *sql.DB, jsonpbMarshaler *jsonpb.Marshaler, jsonpbUnmarshaler *jsonpb.Unmarshaler, config Config, registry *SessionRegistry, tracker Tracker, router MessageRouter, pipeline *pipeline, runtimePool *RuntimePool) *ApiServer { grpcServer := grpc.NewServer( grpc.StatsHandler(ocgrpc.NewServerStatsHandler()), grpc.UnaryInterceptor(SecurityInterceptorFunc(logger, config)), Loading @@ -66,6 +68,8 @@ func StartApiServer(logger *zap.Logger, db *sql.DB, config Config, registry *Ses db: db, config: config, runtimePool: runtimePool, tracker: tracker, router: router, grpcServer: grpcServer, } Loading
server/api_authenticate.go +7 −6 Original line number Diff line number Diff line Loading @@ -15,15 +15,16 @@ package server import ( "golang.org/x/net/context" "github.com/heroiclabs/nakama/api" "regexp" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "math/rand" "regexp" "strings" "time" "github.com/dgrijalva/jwt-go" "strings" "github.com/heroiclabs/nakama/api" "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) var ( Loading