Skip to content

Commit

Permalink
automatically create system topic, bump db version
Browse files Browse the repository at this point in the history
  • Loading branch information
or-else committed Sep 3, 2019
1 parent 6d22396 commit eba7175
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 19 deletions.
8 changes: 4 additions & 4 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -834,19 +834,19 @@ get: {
ims: "2015-10-06T18:07:30.038Z", // timestamp, "if modified since" - return
// public and private values only if at least one of them has been
// updated after the stated timestamp, optional
user: "usr2il9suCbuko", // string, return results for a single user,
user: "usr2il9suCbuko", // string, return results for a single user,
// any topic other than 'me', optional
topic: "usr2il9suCbuko", // string, return results for a single topic,
topic: "usr2il9suCbuko", // string, return results for a single topic,
// 'me' topic only, optional
limit: 20 // integer, limit the number of returned objects
},

// Optional parameters for {get what="data"}
data: {
since: 123, // integer, load messages with server-issued IDs greater or equal
// to this (inclusive/closed), optional
// to this (inclusive/closed), optional
before: 321, // integer, load messages with server-issed sequential IDs less
// than this (exclusive/open), optional
// than this (exclusive/open), optional
limit: 20, // integer, limit the number of returned objects, default: 32,
// optional
},
Expand Down
38 changes: 30 additions & 8 deletions server/db/mysql/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const (
defaultDSN = "root:@tcp(localhost:3306)/tinode?parseTime=true"
defaultDatabase = "tinode"

adpVersion = 108
adpVersion = 109

adapterName = "mysql"

Expand Down Expand Up @@ -302,6 +302,11 @@ func (a *adapter) CreateDb(reset bool) error {
return err
}

// Create system topic 'sys'.
if _, err = createSystemTopic(tx); err != nil {
return err
}

// Indexed topic tags.
if _, err = tx.Exec(
`CREATE TABLE topictags(
Expand Down Expand Up @@ -445,6 +450,14 @@ func (a *adapter) CreateDb(reset bool) error {
}

func (a *adapter) UpgradeDb() error {
bumpVersion := func(a *adapter, x int) error {
if err := a.updateDbVersion(x); err != nil {
return err
}
_, err := a.GetDbVersion()
return err
}

if _, err := a.GetDbVersion(); err != nil {
return err
}
Expand All @@ -464,11 +477,7 @@ func (a *adapter) UpgradeDb() error {
return err
}

if err := a.updateDbVersion(107); err != nil {
return err
}

if _, err := a.GetDbVersion(); err != nil {
if err := bumpVersion(a, 107); err != nil {
return err
}
}
Expand All @@ -482,11 +491,17 @@ func (a *adapter) UpgradeDb() error {
return err
}

if err := a.updateDbVersion(108); err != nil {
if err := bumpVersion(a, 108); err != nil {
return err
}
}

if a.version == 108 {
if _, err = createSystemTopic(tx); err != nil {
return err
}

if _, err := a.GetDbVersion(); err != nil {
if err := a.bumpVersion(a, 109); err != nil {
return err
}
}
Expand All @@ -498,6 +513,13 @@ func (a *adapter) UpgradeDb() error {
return nil
}

func createSystemTopic(tx *sqlx.Tx) error {
now := t.TimeNow()
_, err = tx.Exec(`INSERT INTO topics(createdat,updatedat,name,access,public)
VALUES(?,?,'sys','{"Auth": "N","Anon": "N"}','{"fn": "System"}')`, now, now)
return err
}

func addTags(tx *sqlx.Tx, table, keyName string, keyVal interface{}, tags []string, ignoreDups bool) error {

if len(tags) == 0 {
Expand Down
43 changes: 36 additions & 7 deletions server/db/rethinkdb/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,10 @@ func (a *adapter) CreateDb(reset bool) error {
if _, err := rdb.DB(a.dbName).Table("topics").IndexCreate("Tags", rdb.IndexCreateOpts{Multi: true}).RunWrite(a.conn); err != nil {
return err
}
// Create system topic 'sys'.
if err := createSystemTopic(a); err != nil {
return err
}

// Stored message
if _, err := rdb.DB(a.dbName).TableCreate("messages", rdb.TableCreateOpts{PrimaryKey: "Id"}).RunWrite(a.conn); err != nil {
Expand Down Expand Up @@ -354,6 +358,14 @@ func (a *adapter) CreateDb(reset bool) error {
}

func (a *adapter) UpgradeDb() error {
bumpVersion := func(a *adapter, x int) error {
if err := a.updateDbVersion(x); err != nil {
return err
}
_, err := a.GetDbVersion()
return err
}

_, err := a.GetDbVersion()
if err != nil {
return err
Expand All @@ -369,11 +381,19 @@ func (a *adapter) UpgradeDb() error {
return err
}

if err := a.updateDbVersion(108); err != nil {
if err := bumpVersion(a, 108); err != nil {
return err
}
}

if a.version == 108 {
// Perform database upgrade from versions 108 to version 109.

if err := createSystemTopic(a); err != nil {
return err
}

if _, err := a.GetDbVersion(); err != nil {
if err := bumpVersion(a, 109); err != nil {
return err
}
}
Expand All @@ -385,15 +405,24 @@ func (a *adapter) UpgradeDb() error {
return nil
}

// Create system topic 'sys'.
func createSystemTopic(a *adapter) error {
now := t.TimeNow()
_, err := rdb.DB(a.dbName).Table("topics").Insert(&t.Topic{
Id: "sys",
CreatedAt: now,
UpdatedAt: now,
Access: t.DefaultAccess{Auth: t.ModeNone, Anon: t.ModeNone},
Public: map[string]interface{}{"fn": "System"},
}).RunWrite(a.conn)
return err
}

// UserCreate creates a new user. Returns error and true if error is due to duplicate user name,
// false for any other error
func (a *adapter) UserCreate(user *t.User) error {
_, err := rdb.DB(a.dbName).Table("users").Insert(&user).RunWrite(a.conn)
if err != nil {
return err
}

return nil
return err
}

// Add user's authentication record
Expand Down

0 comments on commit eba7175

Please sign in to comment.