refactor: remove dataset item creator fields

This commit is contained in:
2026-07-23 22:55:53 +08:00
parent af8de3eff6
commit 3705d75e59
4 changed files with 22 additions and 37 deletions

View File

@@ -155,7 +155,7 @@ func TestDatasetSourceAuthorizationUsesOwner(t *testing.T) {
require.Empty(t, creatorSources) require.Empty(t, creatorSources)
item := models.SaDatasetItem{ item := models.SaDatasetItem{
SourceID: source.ID, CreatedBy: creator.ID, Title: "Creator-authored item", Status: "unread", SourceID: source.ID, Title: "Collected item", Status: "unread",
} }
require.NoError(t, database.Create(&item).Error) require.NoError(t, database.Create(&item).Error)
page, err := NewService(database).ListItemsPage(owner.ID, source.Identity, 50, 0) page, err := NewService(database).ListItemsPage(owner.ID, source.Identity, 50, 0)
@@ -184,7 +184,7 @@ func TestDatasetItemsArePaginatedByOwnedSource(t *testing.T) {
require.NoError(t, database.Create(&source).Error) require.NoError(t, database.Create(&source).Error)
for index := 0; index < 3; index++ { for index := 0; index < 3; index++ {
require.NoError(t, database.Create(&models.SaDatasetItem{ require.NoError(t, database.Create(&models.SaDatasetItem{
SourceID: source.ID, CreatedBy: owner.ID, SourceID: source.ID,
Title: fmt.Sprintf("Item %d", index), Status: "unread", Title: fmt.Sprintf("Item %d", index), Status: "unread",
}).Error) }).Error)
} }

View File

@@ -297,7 +297,7 @@ func (s *Service) CreateItem(userID uint, input ItemInput) (*models.SaDatasetIte
return nil, ErrURLInvalid return nil, ErrURLInvalid
} }
item := &models.SaDatasetItem{ item := &models.SaDatasetItem{
SourceID: source.ID, CreatedBy: userID, Title: title, SourceID: source.ID, Title: title,
Summary: strings.TrimSpace(input.Summary), Content: strings.TrimSpace(input.Content), Summary: strings.TrimSpace(input.Summary), Content: strings.TrimSpace(input.Content),
URL: itemURL, Status: "unread", PublishedAt: utcOptionalTime(input.PublishedAt), URL: itemURL, Status: "unread", PublishedAt: utcOptionalTime(input.PublishedAt),
} }
@@ -539,7 +539,7 @@ func (s *Service) executeDatasetRun(ctx context.Context, entry queuedSource) (mo
completedAt := time.Now().UTC() completedAt := time.Now().UTC()
err := s.db.Transaction(func(tx *gorm.DB) error { err := s.db.Transaction(func(tx *gorm.DB) error {
var storeErr error var storeErr error
inserted, storeErr = storeFeedItems(tx, cron.CreatedBy, source, feed.Items) inserted, storeErr = storeFeedItems(tx, source, feed.Items)
if storeErr != nil { if storeErr != nil {
return storeErr return storeErr
} }
@@ -569,22 +569,12 @@ func (s *Service) executeDatasetRun(ctx context.Context, entry queuedSource) (mo
return cron, nil return cron, nil
} }
func (s *Service) storeFeedItems(userID uint, source models.SaDatasetSource, items []FeedItem) (int, error) { func storeFeedItems(tx *gorm.DB, source models.SaDatasetSource, items []FeedItem) (int, error) {
inserted := 0
err := s.db.Transaction(func(tx *gorm.DB) error {
var err error
inserted, err = storeFeedItems(tx, userID, source, items)
return err
})
return inserted, err
}
func storeFeedItems(tx *gorm.DB, userID uint, source models.SaDatasetSource, items []FeedItem) (int, error) {
inserted := 0 inserted := 0
for _, input := range items { for _, input := range items {
externalID := input.ExternalID externalID := input.ExternalID
item := models.SaDatasetItem{ item := models.SaDatasetItem{
SourceID: source.ID, CreatedBy: userID, ExternalID: &externalID, SourceID: source.ID, ExternalID: &externalID,
Title: input.Title, Summary: input.Summary, Content: input.Content, Title: input.Title, Summary: input.Summary, Content: input.Content,
URL: input.URL, Status: "unread", PublishedAt: input.PublishedAt, URL: input.URL, Status: "unread", PublishedAt: input.PublishedAt,
} }

View File

@@ -7,8 +7,6 @@ type SaDatasetItem struct {
Identity string `gorm:"type:char(36);uniqueIndex"` Identity string `gorm:"type:char(36);uniqueIndex"`
SourceID uint `gorm:"index;not null"` SourceID uint `gorm:"index;not null"`
SourceIdentity string `gorm:"type:char(36);index"` SourceIdentity string `gorm:"type:char(36);index"`
CreatedBy uint `gorm:"index;not null"`
CreatedByIdentity string `gorm:"type:char(36);index"`
ExternalID *string `gorm:"size:64;index"` ExternalID *string `gorm:"size:64;index"`
Title string `gorm:"size:500;not null"` Title string `gorm:"size:500;not null"`
Summary string `gorm:"type:text"` Summary string `gorm:"type:text"`

View File

@@ -33,10 +33,7 @@ func (m *SaDatasetItem) BeforeCreate(tx *gorm.DB) error {
if err := ensureIdentity(&m.Identity); err != nil { if err := ensureIdentity(&m.Identity); err != nil {
return err return err
} }
if err := resolveIdentity(tx, &SaDatasetSource{}, m.SourceID, &m.SourceIdentity); err != nil { return resolveIdentity(tx, &SaDatasetSource{}, m.SourceID, &m.SourceIdentity)
return err
}
return resolveIdentity(tx, &SaUser{}, m.CreatedBy, &m.CreatedByIdentity)
} }
func (m *SaDatasetCron) BeforeCreate(tx *gorm.DB) error { func (m *SaDatasetCron) BeforeCreate(tx *gorm.DB) error {