Commit 7a9d42e7 authored by Mo Firouz's avatar Mo Firouz
Browse files

Updated configuration variable names. Most importantly `DB` is now changed to...

Updated configuration variable names. Most importantly `DB` is now changed to `database.address`. Merged #96

Use Lua table for Content/Metadata fields instead of JSON literals.
Move all `nakamax` functions into `nakama`.
parent 21a07291
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -4,6 +4,12 @@ All notable changes to this project are documented below.
The format is based on [keep a changelog](http://keepachangelog.com/) and this project uses [semantic versioning](http://semver.org/).

## [Unreleased]
### Changed
- Use Lua table for Content field when creating new notifications.
- Use Lua table for Metadata field for new groups.
- Use Lua table for Metadata field when updating a user.
- Updated configuration variable names. Most importantly `DB` is now changed to `database.address`.
- Moved all `nakamax` functions into `nakama`. 

## [1.0.0-rc.1] - 2017-07-18
### Added
+5 −5
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ func AdminParse(args []string, logger *zap.Logger) {
}

func createLeaderboard(args []string, logger *zap.Logger) {
	var dsns string
	var dbAddress string
	var id string
	var authoritative bool
	var sortOrder string
@@ -59,7 +59,7 @@ func createLeaderboard(args []string, logger *zap.Logger) {
	var metadata string

	flags := flag.NewFlagSet("admin", flag.ExitOnError)
	flags.StringVar(&dsns, "db", "root@localhost:26257", "CockroachDB JDBC connection details.")
	flags.StringVar(&dbAddress, "database.address", "root@localhost:26257", "Address of CockroachDB server (username:password@address:port/dbname)")
	flags.StringVar(&id, "id", "", "ID to assign to the leaderboard.")
	flags.BoolVar(&authoritative, "authoritative", false, "True if clients may not submit scores directly, false otherwise.")
	flags.StringVar(&sortOrder, "sort", "desc", "Leaderboard sort order, 'asc' or 'desc'.")
@@ -70,7 +70,7 @@ func createLeaderboard(args []string, logger *zap.Logger) {
		logger.Fatal("Could not parse admin flags.")
	}

	if dsns == "" {
	if dbAddress == "" {
		logger.Fatal("Database connection details are required.")
	}

@@ -118,13 +118,13 @@ func createLeaderboard(args []string, logger *zap.Logger) {
	}
	params = append(params, metadataBytes)

	rawurl := fmt.Sprintf("postgresql://%s?sslmode=disable", dsns)
	rawurl := fmt.Sprintf("postgresql://%s?sslmode=disable", dbAddress)
	url, err := url.Parse(rawurl)
	if err != nil {
		logger.Fatal("Bad connection URL", zap.Error(err))
	}

	logger.Info("Database connection", zap.String("dsns", dsns))
	logger.Info("Database connection", zap.String("db", dbAddress))

	// Default to "nakama" as DB name.
	dbname := "nakama"
+15 −15
Original line number Diff line number Diff line
@@ -42,8 +42,8 @@ type statusRow struct {
}

type migrationService struct {
	DSNS       string
	Limit      int
	dbAddress  string
	limit      int
	logger     *zap.Logger
	migrations *migrate.AssetMigrationSource
	db         *sql.DB
@@ -104,7 +104,7 @@ func MigrateParse(args []string, logger *zap.Logger) {

	ms.parseSubcommand(args[1:])

	rawurl := fmt.Sprintf("postgresql://%s?sslmode=disable", ms.DSNS)
	rawurl := fmt.Sprintf("postgresql://%s?sslmode=disable", ms.dbAddress)
	url, err := url.Parse(rawurl)
	if err != nil {
		logger.Fatal("Bad connection URL", zap.Error(err))
@@ -115,7 +115,7 @@ func MigrateParse(args []string, logger *zap.Logger) {
		dbname = url.Path[1:]
	}

	logger.Info("Database connection", zap.String("dsns", ms.DSNS))
	logger.Info("Database connection", zap.String("db", ms.dbAddress))

	url.Path = ""
	db, err := sql.Open(dialect, url.String())
@@ -157,11 +157,11 @@ start:
}

func (ms *migrationService) up() {
	if ms.Limit < defaultLimit {
		ms.Limit = 0
	if ms.limit < defaultLimit {
		ms.limit = 0
	}

	appliedMigrations, err := migrate.ExecMax(ms.db, dialect, ms.migrations, migrate.Up, ms.Limit)
	appliedMigrations, err := migrate.ExecMax(ms.db, dialect, ms.migrations, migrate.Up, ms.limit)
	if err != nil {
		ms.logger.Fatal("Failed to apply migrations", zap.Int("count", appliedMigrations), zap.Error(err))
	}
@@ -170,11 +170,11 @@ func (ms *migrationService) up() {
}

func (ms *migrationService) down() {
	if ms.Limit < defaultLimit {
		ms.Limit = 1
	if ms.limit < defaultLimit {
		ms.limit = 1
	}

	appliedMigrations, err := migrate.ExecMax(ms.db, dialect, ms.migrations, migrate.Down, ms.Limit)
	appliedMigrations, err := migrate.ExecMax(ms.db, dialect, ms.migrations, migrate.Down, ms.limit)
	if err != nil {
		ms.logger.Fatal("Failed to migrate back", zap.Int("count", appliedMigrations), zap.Error(err))
	}
@@ -183,7 +183,7 @@ func (ms *migrationService) down() {
}

func (ms *migrationService) redo() {
	if ms.Limit > defaultLimit {
	if ms.limit > defaultLimit {
		ms.logger.Warn("Limit is ignored when redo is invoked")
	}

@@ -201,7 +201,7 @@ func (ms *migrationService) redo() {
}

func (ms *migrationService) status() {
	if ms.Limit > defaultLimit {
	if ms.limit > defaultLimit {
		ms.logger.Warn("Limit is ignored when status is invoked")
	}

@@ -240,14 +240,14 @@ func (ms *migrationService) status() {

func (ms *migrationService) parseSubcommand(args []string) {
	flags := flag.NewFlagSet("migrate", flag.ExitOnError)
	flags.StringVar(&ms.DSNS, "db", "root@localhost:26257", "CockroachDB JDBC connection details.")
	flags.IntVar(&ms.Limit, "limit", defaultLimit, "Number of migrations to apply forwards or backwards.")
	flags.StringVar(&ms.dbAddress, "database.address", "root@localhost:26257", "Address of CockroachDB server (username:password@address:port/dbname)")
	flags.IntVar(&ms.limit, "limit", defaultLimit, "Number of migrations to apply forwards or backwards.")

	if err := flags.Parse(args); err != nil {
		ms.logger.Fatal("Could not parse migration flags.")
	}

	if ms.DSNS == "" {
	if ms.dbAddress == "" {
		ms.logger.Fatal("Database connection details are required.")
	}
}
+2 −2
Original line number Diff line number Diff line
@@ -78,9 +78,9 @@ func main() {
	multiLogger.Info("Nakama starting")
	multiLogger.Info("Node", zap.String("name", config.GetName()), zap.String("version", semver))
	multiLogger.Info("Data directory", zap.String("path", config.GetDataDir()))
	multiLogger.Info("Database connections", zap.Strings("dsns", config.GetDB()))
	multiLogger.Info("Database connections", zap.Strings("dsns", config.GetDatabase().Addresses))

	db := dbConnect(multiLogger, config.GetDB())
	db := dbConnect(multiLogger, config.GetDatabase().Addresses)

	// Check migration status and log if the schema has diverged.
	cmd.MigrationStartupCheck(multiLogger, db)
+3 −3
Original line number Diff line number Diff line
@@ -479,16 +479,16 @@ func (fm *FlagMaker) defineFlag(name string, value reflect.Value, usage string)
}

func (fm *FlagMaker) defineStringSlice(name string, value reflect.Value, usage string) {
	ptrValue := value.Interface().([]string)
	ptrValue := value.Addr().Interface().(*[]string)
	fm.fs.Var(newStringSlice(ptrValue), name, usage)
}

func (fm *FlagMaker) defineIntSlice(name string, value reflect.Value, usage string) {
	ptrValue := value.Interface().([]int)
	ptrValue := value.Addr().Interface().(*[]int)
	fm.fs.Var(newIntSlice(ptrValue), name, usage)
}

func (fm *FlagMaker) defineFloat64Slice(name string, value reflect.Value, usage string) {
	ptrValue := value.Interface().([]float64)
	ptrValue := value.Addr().Interface().(*[]float64)
	fm.fs.Var(newFloat64Slice(ptrValue), name, usage)
}
Loading