feat: complete shared database tenant sharding
This commit is contained in:
@@ -5,10 +5,18 @@ package mysql
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
t "github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
func tenantShardSQL(tenantID t.TenantID, query string) string {
|
||||
query = strings.ReplaceAll(query, "im_topics", tenantTopicsTable(tenantID))
|
||||
query = strings.ReplaceAll(query, "im_group_members", tenantGroupMembersTable(tenantID))
|
||||
query = strings.ReplaceAll(query, "im_subscriptions", tenantSubscriptionsTable(tenantID))
|
||||
return strings.ReplaceAll(query, "im_system_notifications", tenantSystemNotificationsTable(tenantID))
|
||||
}
|
||||
|
||||
func tenantTablePrefix(tenantID t.TenantID) string {
|
||||
return fmt.Sprintf("im_%03d_", tenantID)
|
||||
}
|
||||
@@ -21,6 +29,22 @@ func tenantMessagesTable(tenantID t.TenantID) string {
|
||||
return tenantTablePrefix(tenantID) + "messages"
|
||||
}
|
||||
|
||||
func tenantTopicsTable(tenantID t.TenantID) string {
|
||||
return tenantTablePrefix(tenantID) + "topics"
|
||||
}
|
||||
|
||||
func tenantGroupMembersTable(tenantID t.TenantID) string {
|
||||
return tenantTablePrefix(tenantID) + "group_members"
|
||||
}
|
||||
|
||||
func tenantSubscriptionsTable(tenantID t.TenantID) string {
|
||||
return tenantTablePrefix(tenantID) + "subscriptions"
|
||||
}
|
||||
|
||||
func tenantSystemNotificationsTable(tenantID t.TenantID) string {
|
||||
return tenantTablePrefix(tenantID) + "system_notifications"
|
||||
}
|
||||
|
||||
func tenantGroupMessagesTable(tenantID t.TenantID, month string) (string, bool) {
|
||||
if !validShardMonth(month) {
|
||||
return "", false
|
||||
|
||||
Reference in New Issue
Block a user