diff options
author | Alex Auvolat <alex@adnab.me> | 2020-02-16 22:07:41 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2020-02-16 22:07:41 +0100 |
commit | d2ccd6763a8a8a88e5cdbf95fd665e679f8e187e (patch) | |
tree | 8d17148b9424019c38d0d19f1b0e2ccef96b87e0 /appservice/db.go | |
parent | 046ec6380b7bb363e537ade7fd254b5505dde32d (diff) | |
download | easybridge-d2ccd6763a8a8a88e5cdbf95fd665e679f8e187e.tar.gz easybridge-d2ccd6763a8a8a88e5cdbf95fd665e679f8e187e.zip |
Begin some bridging
Diffstat (limited to 'appservice/db.go')
-rw-r--r-- | appservice/db.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/appservice/db.go b/appservice/db.go index 2c71312..f8cbccf 100644 --- a/appservice/db.go +++ b/appservice/db.go @@ -1,6 +1,7 @@ package appservice import ( + "git.deuxfleurs.fr/Deuxfleurs/easybridge/connector" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" _ "github.com/jinzhu/gorm/dialects/postgres" @@ -17,5 +18,54 @@ func InitDb() error { return err } + db.AutoMigrate(&DbUserMap{}) + db.Model(&DbUserMap{}).AddIndex("idx_protocol_user", "protocol", "user_id") + + db.AutoMigrate(&DbRoomMap{}) + db.Model(&DbRoomMap{}).AddIndex("idx_protocol_room", "protocol", "room_id") + + db.AutoMigrate(&DbPmRoomMap{}) + db.Model(&DbPmRoomMap{}).AddIndex("idx_protocol_user_account_user", "protocol", "user_id", "mx_user_id", "account_name") + return nil } + +// User mapping between protocol user IDs and puppeted matrix ids +type DbUserMap struct { + gorm.Model + + Protocol string + UserID connector.UserID + MxUserID string `gorm:"index:mxuserid"` +} + +// Room mapping between Matrix rooms and outside rooms +type DbRoomMap struct { + gorm.Model + + // Network protocol + Protocol string + + // Room id on the bridged network + RoomID connector.RoomID + + // Bridged room matrix id + MxRoomID string `gorm:"index:mxroomid"` +} + +// Room mapping between Matrix rooms and private messages +type DbPmRoomMap struct { + gorm.Model + + // User id and account name of the local end viewed on Matrix + MxUserID string + Protocol string + AccountName string + + // User id to reach them + UserID connector.RoomID + + // Bridged room for PMs + MxRoomID string `gorm:"index:mxroomoid"` +} + |