GetAllForObject, use Master instead of replica

This commit is contained in:
BenCookie95 2026-02-18 12:54:52 -05:00
parent 96899133c0
commit d60f1e6ec4
2 changed files with 72 additions and 1 deletions

View file

@ -233,7 +233,8 @@ func (s *SqlAutoTranslationStore) GetAllForObject(objectType, objectID string) (
Where(sq.Eq{"ObjectType": objectType, "ObjectId": objectID})
var translations []Translation
if err := s.GetReplica().SelectBuilder(&translations, query); err != nil {
// Use GetMaster to avoid replica lag issues when workers fetch queued items
if err := s.GetMaster().SelectBuilder(&translations, query); err != nil {
return nil, errors.Wrapf(err, "failed to get all translations for object_id=%s", objectID)
}

View file

@ -18,6 +18,7 @@ func TestAutoTranslationStore(t *testing.T, rctx request.CTX, ss store.Store, s
t.Run("IsUserEnabled", func(t *testing.T) { testAutoTranslationIsUserEnabled(t, rctx, ss) })
t.Run("GetUserLanguage", func(t *testing.T) { testAutoTranslationGetUserLanguage(t, rctx, ss) })
t.Run("GetActiveDestinationLanguages", func(t *testing.T) { testAutoTranslationGetActiveDestinationLanguages(t, rctx, ss) })
t.Run("GetAllForObject", func(t *testing.T) { testAutoTranslationGetAllForObject(t, ss) })
}
func testAutoTranslationIsUserEnabled(t *testing.T, rctx request.CTX, ss store.Store) {
@ -376,3 +377,72 @@ func testAutoTranslationGetActiveDestinationLanguages(t *testing.T, rctx request
assert.Contains(t, languages, "es")
})
}
func testAutoTranslationGetAllForObject(t *testing.T, ss store.Store) {
objectID := model.NewId()
objectType := model.TranslationObjectTypePost
t.Run("returns empty for nonexistent object", func(t *testing.T) {
results, err := ss.AutoTranslation().GetAllForObject(objectType, model.NewId())
require.NoError(t, err)
assert.Empty(t, results)
})
t.Run("returns all translations for an object", func(t *testing.T) {
// Save translations in two languages
err := ss.AutoTranslation().Save(&model.Translation{
ObjectID: objectID,
ObjectType: objectType,
Lang: "es",
Provider: "test",
Type: model.TranslationTypeString,
Text: "hola",
State: model.TranslationStateReady,
})
require.NoError(t, err)
err = ss.AutoTranslation().Save(&model.Translation{
ObjectID: objectID,
ObjectType: objectType,
Lang: "fr",
Provider: "test",
Type: model.TranslationTypeString,
Text: "bonjour",
State: model.TranslationStateReady,
})
require.NoError(t, err)
results, err := ss.AutoTranslation().GetAllForObject(objectType, objectID)
require.NoError(t, err)
require.Len(t, results, 2)
langToText := make(map[string]string)
for _, tr := range results {
assert.Equal(t, objectID, tr.ObjectID)
assert.Equal(t, objectType, tr.ObjectType)
langToText[tr.Lang] = tr.Text
}
assert.Equal(t, "hola", langToText["es"])
assert.Equal(t, "bonjour", langToText["fr"])
})
t.Run("does not return translations for other objects", func(t *testing.T) {
otherID := model.NewId()
err := ss.AutoTranslation().Save(&model.Translation{
ObjectID: otherID,
ObjectType: objectType,
Lang: "de",
Provider: "test",
Type: model.TranslationTypeString,
Text: "hallo",
State: model.TranslationStateReady,
})
require.NoError(t, err)
results, err := ss.AutoTranslation().GetAllForObject(objectType, objectID)
require.NoError(t, err)
for _, tr := range results {
assert.Equal(t, objectID, tr.ObjectID)
}
})
}