aboutsummaryrefslogtreecommitdiff
path: root/appservice/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'appservice/db.go')
-rw-r--r--appservice/db.go50
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"`
+}
+