fix(mysql): adapt tenant shared database fields

This commit is contained in:
richjohnrambo
2026-09-22 14:40:15 +08:00
parent 865b436264
commit 2e0612acbb
11 changed files with 861 additions and 528 deletions
+28 -2
View File
@@ -6,6 +6,8 @@ import (
"database/sql"
"strings"
"testing"
types "github.com/tinode/chat/server/store/types"
)
type recordingGroupSchemaExecutor struct {
@@ -54,12 +56,36 @@ func TestEnsureIMGroupBusinessTablesUsesSelectedTenantDatabase(t *testing.T) {
}
func TestGroupMessageShardTableRejectsUnsafeMonth(t *testing.T) {
if table, ok := groupMessageShardTable("202609"); !ok || table != "im_group_messages_202609" {
if table, ok := groupMessageShardTable(1, "202609"); !ok || table != "im_group_messages_202609" {
t.Fatalf("unexpected valid shard: table=%q ok=%v", table, ok)
}
for _, month := range []string{"", "20269", "202613", "2026_09", "202609;DROP TABLE im_users"} {
if table, ok := groupMessageShardTable(month); ok || table != "" {
if table, ok := groupMessageShardTable(1, month); ok || table != "" {
t.Fatalf("unsafe shard month accepted: month=%q table=%q", month, table)
}
}
}
func TestTenantPartitionTableNames(t *testing.T) {
tests := []struct {
tenantID types.TenantID
friends string
messages string
group string
}{
{tenantID: 1, friends: "im_friendships", messages: "im_messages", group: "im_group_messages_202609"},
{tenantID: 10, friends: "im_friendships", messages: "im_messages", group: "im_group_messages_202609"},
{tenantID: 1000, friends: "im_friendships", messages: "im_messages", group: "im_group_messages_202609"},
}
for _, tc := range tests {
if got := tenantFriendshipsTable(tc.tenantID); got != tc.friends {
t.Fatalf("tenant %d friendship table: got %q, want %q", tc.tenantID, got, tc.friends)
}
if got := tenantMessagesTable(tc.tenantID); got != tc.messages {
t.Fatalf("tenant %d message table: got %q, want %q", tc.tenantID, got, tc.messages)
}
if got, ok := tenantGroupMessagesTable(tc.tenantID, "202609"); !ok || got != tc.group {
t.Fatalf("tenant %d group message table: got %q, ok=%v, want %q", tc.tenantID, got, ok, tc.group)
}
}
}