Skip to content

Commit

Permalink
style(indices): lint error
Browse files Browse the repository at this point in the history
  • Loading branch information
RanKKI committed Oct 7, 2022
1 parent 3cbd443 commit b02c841
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 65 deletions.
6 changes: 3 additions & 3 deletions internal/domain/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ type IndexRepo interface {
ctx context.Context, id model.IndexID, subjectType model.SubjectType, limit, offset int,
) ([]IndexSubject, error)
AddIndexSubject(
ctx context.Context, id model.IndexID, subject_id model.SubjectID, sort uint32, comment string,
ctx context.Context, id model.IndexID, subjectID model.SubjectID, sort uint32, comment string,
) (*IndexSubject, error)
UpdateIndexSubject(
ctx context.Context, id model.IndexID, subject_id model.SubjectID, sort uint32, comment string,
ctx context.Context, id model.IndexID, subjectID model.SubjectID, sort uint32, comment string,
) error
DeleteIndexSubject(
ctx context.Context, id model.IndexID, subject_id model.SubjectID,
ctx context.Context, id model.IndexID, subjectID model.SubjectID,
) error
}

Expand Down
63 changes: 37 additions & 26 deletions internal/index/mysql_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,50 +157,62 @@ func (r mysqlRepo) ListSubjects(
}

func (r mysqlRepo) AddIndexSubject(
ctx context.Context, id model.IndexID, subject_id model.SubjectID, sort uint32, comment string,
ctx context.Context, id model.IndexID,
subjectID model.SubjectID, sort uint32, comment string,
) (*domain.IndexSubject, error) {
var err error

index, err := r.Get(ctx, id)
if err != nil {
return nil, err
}

subjectDO, err := r.q.Subject.WithContext(ctx).
Where(r.q.Subject.ID.Eq(subject_id)).
Where(r.q.Subject.ID.Eq(subjectID)).
First()

if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, domain.ErrSubjectNotFound
}
return nil, err
return nil, errgo.Wrap(err, "dal")
}

var indexSubject *dao.IndexSubject
now := time.Now().Unix()

// 事务:增加 indexSubject 并更新 index 的 Lasttouch 和 SubjectTotal
err = r.q.Transaction(func(tx *query.Query) error {
q := r.q.IndexSubject
indexSubject, err = q.WithContext(ctx).Where(q.Rid.Eq(id), q.Sid.Eq(uint32(subject_id))).FirstOrInit()
q := r.q.IndexSubject
indexSubject, err = q.WithContext(ctx).Where(q.Rid.Eq(id), q.Sid.Eq(uint32(subjectID))).First()

if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errgo.Wrap(err, "dal")
}

if indexSubject != nil && indexSubject.ID != 0 {
return nil, domain.ErrExists
}

indexSubject = &dao.IndexSubject{
Comment: comment,
Order: sort,
Dateline: uint32(now),
Type: subjectDO.TypeID,
Rid: id,
Sid: uint32(subjectID),
}

if indexSubject.ID != 0 {
return domain.ErrExists
err = r.q.Transaction(func(tx *query.Query) error {
err = q.WithContext(ctx).Create(indexSubject)
if err != nil {
return errgo.Wrap(err, "failed to create subject in index")
}

indexSubject.Comment = comment
indexSubject.Order = sort
indexSubject.Dateline = uint32(now)
indexSubject.Type = subjectDO.TypeID
indexSubject.Rid = id
indexSubject.Sid = uint32(subject_id)
q.WithContext(ctx).Create(indexSubject)
// avoid lint error
// shadow: declaration of "err" shadows declaration
var result gen.ResultInfo

result, err := r.q.Index.WithContext(ctx).
result, err = r.q.Index.WithContext(ctx).
Where(r.q.Index.ID.Eq(id)).
Updates(dao.Index{
Lasttouch: uint32(now),
Expand All @@ -211,28 +223,27 @@ func (r mysqlRepo) AddIndexSubject(
})

if err != nil {
return nil, err
return nil, errgo.Wrap(err, "dal")
}

subject, err := subject.ConvertDao(subjectDO)
if err != nil {
return nil, err
return nil, errgo.Wrap(err, "subject.ConvertDao")
}

return &domain.IndexSubject{
AddedAt: time.Unix(int64(indexSubject.Dateline), 0),
Comment: indexSubject.Comment,
Subject: subject,
}, nil

}

func (r mysqlRepo) UpdateIndexSubject(
ctx context.Context, id model.IndexID, subject_id model.SubjectID, sort uint32, comment string,
ctx context.Context, id model.IndexID, subjectID model.SubjectID, sort uint32, comment string,
) error {
q := r.q.IndexSubject
result, err := q.WithContext(ctx).
Where(q.Rid.Eq(id), q.Sid.Eq(uint32(subject_id))).
Where(q.Rid.Eq(id), q.Sid.Eq(uint32(subjectID))).
Updates(dao.IndexSubject{
Comment: comment,
Order: sort,
Expand All @@ -241,11 +252,11 @@ func (r mysqlRepo) UpdateIndexSubject(
}

func (r mysqlRepo) DeleteIndexSubject(
ctx context.Context, id model.IndexID, subject_id model.SubjectID,
ctx context.Context, id model.IndexID, subjectID model.SubjectID,
) error {
return r.q.Transaction(func(tx *query.Query) error {
result, err := r.q.IndexSubject.WithContext(ctx).
Where(r.q.IndexSubject.Rid.Eq(id), r.q.IndexSubject.Sid.Eq(uint32(subject_id))).
Where(r.q.IndexSubject.Rid.Eq(id), r.q.IndexSubject.Sid.Eq(uint32(subjectID))).
Delete()
if err = r.WrapResult(result, err, "failed to delete index subject"); err != nil {
return err
Expand Down
31 changes: 24 additions & 7 deletions internal/index/mysql_repository_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ func TestMysqlRepo_UpdateIndex(t *testing.T) {
t.Parallel()

repo := getRepo(t)
i, err := repo.Get(context.Background(), 15045)
_, err := repo.Get(context.Background(), 15045)

defaultTitle := "日本动画最高收视率TOP100"
defaultDesc := "[url]http://www.tudou.com/programs/view/" +
Expand All @@ -119,7 +119,7 @@ func TestMysqlRepo_UpdateIndex(t *testing.T) {
require.NoError(t, err)

// check updated index information
i, err = repo.Get(context.Background(), 15045)
i, err := repo.Get(context.Background(), 15045)
require.NoError(t, err)
require.EqualValues(t, "日本动画", i.Title)
require.EqualValues(t, "日本动画的介绍", i.Description)
Expand Down Expand Up @@ -183,24 +183,30 @@ func TestMysqlRepo_DeleteIndex2(t *testing.T) {
ctx := context.Background()

err := repo.New(ctx, index)
require.NoError(t, err)

for i := 10; i < 20; i++ {
_, err = repo.AddIndexSubject(ctx, index.ID, model.SubjectID(i),
uint32(i), fmt.Sprintf("comment %d", i))
require.NoError(t, err)
}

i, err := repo.Get(ctx, index.ID)
require.NoError(t, err)
require.EqualValues(t, 10, i.Total)

subjects, err := repo.ListSubjects(context.Background(), index.ID, model.SubjectTypeAll, 20, 0)
require.NoError(t, err)
require.Len(t, subjects, 10)

repo.Delete(ctx, index.ID)
err = repo.Delete(ctx, index.ID)
require.NoError(t, err)

i, err = repo.Get(ctx, index.ID)
require.Equal(t, err, domain.ErrNotFound)

subjects, err = repo.ListSubjects(context.Background(), index.ID, model.SubjectTypeAll, 20, 0)
require.NoError(t, err)
require.Len(t, subjects, 0)

// 确保不会影响到其他目录
Expand Down Expand Up @@ -256,7 +262,8 @@ func TestMysqlRepo_AddIndexSubject(t *testing.T) {
require.EqualValues(t, cache[3].Comment, "comment 1")
require.EqualValues(t, cache[4].Comment, "comment 3")

repo.Delete(ctx, index.ID)
err = repo.Delete(ctx, index.ID)
require.NoError(t, err)
}

func TestMysqlRepo_DeleteIndexSubject(t *testing.T) {
Expand Down Expand Up @@ -290,24 +297,30 @@ func TestMysqlRepo_DeleteIndexSubject(t *testing.T) {
}

i, err := repo.Get(ctx, index.ID)
require.NoError(t, err)
require.EqualValues(t, 10, i.Total)

subjects, err := repo.ListSubjects(context.Background(), index.ID, model.SubjectTypeAll, 20, 0)
require.NoError(t, err)
require.Len(t, subjects, 10)

repo.DeleteIndexSubject(ctx, index.ID, 15)
err = repo.DeleteIndexSubject(ctx, index.ID, 15)
require.NoError(t, err)

i, err = repo.Get(ctx, index.ID)
require.NoError(t, err)
require.EqualValues(t, 9, i.Total)

subjects, err = repo.ListSubjects(context.Background(), index.ID, model.SubjectTypeAll, 20, 0)
require.NoError(t, err)
require.Len(t, subjects, 9)

for _, v := range subjects {
require.NotEqualValues(t, v.Subject.ID, 15)
}

repo.Delete(ctx, index.ID)
err = repo.Delete(ctx, index.ID)
require.NoError(t, err)
}

func TestMysqlRepo_FailedAddedToNonExists(t *testing.T) {
Expand Down Expand Up @@ -344,20 +357,24 @@ func TestMysqlRepo_UpdateSubjectInfo(t *testing.T) {
ctx := context.Background()

err := repo.New(ctx, index)
require.NoError(t, err)

_, err = repo.AddIndexSubject(ctx, index.ID, 5, 5, "test")
require.NoError(t, err)
subjects, err := repo.ListSubjects(context.Background(), index.ID, model.SubjectTypeAll, 20, 0)
require.NoError(t, err)
require.Len(t, subjects, 1)
require.EqualValues(t, subjects[0].Subject.ID, 5)
require.EqualValues(t, subjects[0].Comment, "test")

err = repo.UpdateIndexSubject(ctx, index.ID, 5, 5, "test22222")
require.NoError(t, err)

subjects, err = repo.ListSubjects(context.Background(), index.ID, model.SubjectTypeAll, 20, 0)
require.NoError(t, err)
require.Len(t, subjects, 1)
require.EqualValues(t, subjects[0].Subject.ID, 5)
require.EqualValues(t, subjects[0].Comment, "test22222")

}

func TestMysqlRepo_AddExists(t *testing.T) {
Expand Down
50 changes: 25 additions & 25 deletions internal/mocks/IndexRepo.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit b02c841

Please sign in to comment.