Genericise sliceutil functions (#4253)

* Genericise sliceutil.SliceSame
* Genericise intslice functions
* Genericise stringutil functions
This commit is contained in:
DingDongSoLong4
2023-11-01 23:58:32 +02:00
committed by GitHub
parent cc6673f276
commit 9621213424
51 changed files with 259 additions and 409 deletions

View File

@@ -12,7 +12,7 @@ import (
"github.com/doug-martin/goqu/v9/exp"
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"gopkg.in/guregu/null.v4"
"gopkg.in/guregu/null.v4/zero"
)
@@ -343,7 +343,7 @@ func (qb *GalleryStore) FindMany(ctx context.Context, ids []int) ([]*models.Gall
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
galleries[i] = s
}

View File

@@ -11,7 +11,7 @@ import (
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
)
const (
@@ -162,7 +162,7 @@ func (qb *GalleryChapterStore) FindMany(ctx context.Context, ids []int) ([]*mode
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}

View File

@@ -9,7 +9,7 @@ import (
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"gopkg.in/guregu/null.v4"
"gopkg.in/guregu/null.v4/zero"
@@ -323,7 +323,7 @@ func (qb *ImageStore) FindMany(ctx context.Context, ids []int) ([]*models.Image,
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
images[i] = s
}

View File

@@ -10,7 +10,7 @@ import (
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/pkg/logger"
"github.com/stashapp/stash/pkg/sliceutil/stringslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/sqlite"
)
@@ -136,7 +136,7 @@ func (m *schema42Migrator) migratePerformerAliases(id int, aliases string) error
}
// remove duplicates
aliasList = stringslice.StrAppendUniques(nil, aliasList)
aliasList = sliceutil.AppendUniques(nil, aliasList)
// insert aliases into table
for _, alias := range aliasList {

View File

@@ -13,7 +13,7 @@ import (
"gopkg.in/guregu/null.v4/zero"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
)
const (
@@ -204,7 +204,7 @@ func (qb *MovieStore) FindMany(ctx context.Context, ids []int) ([]*models.Movie,
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}

View File

@@ -12,7 +12,7 @@ import (
"github.com/doug-martin/goqu/v9/exp"
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/utils"
"gopkg.in/guregu/null.v4"
"gopkg.in/guregu/null.v4/zero"
@@ -336,7 +336,7 @@ func (qb *PerformerStore) FindMany(ctx context.Context, ids []int) ([]*models.Pe
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}

View File

@@ -13,7 +13,7 @@ import (
"github.com/stashapp/stash/pkg/logger"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
)
const (
@@ -182,7 +182,7 @@ func (qb *SavedFilterStore) FindMany(ctx context.Context, ids []int, ignoreNotFo
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}

View File

@@ -18,7 +18,7 @@ import (
"gopkg.in/guregu/null.v4/zero"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/utils"
)
@@ -456,7 +456,7 @@ func (qb *SceneStore) FindMany(ctx context.Context, ids []int) ([]*models.Scene,
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
scenes[i] = s
}
@@ -1819,7 +1819,7 @@ func (qb *SceneStore) FindDuplicates(ctx context.Context, distance int, duration
var sceneIds []int
for _, strId := range strIds {
if intId, err := strconv.Atoi(strId); err == nil {
sceneIds = intslice.IntAppendUnique(sceneIds, intId)
sceneIds = sliceutil.AppendUnique(sceneIds, intId)
}
}
// filter out

View File

@@ -11,7 +11,7 @@ import (
"github.com/jmoiron/sqlx"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
)
const sceneMarkerTable = "scene_markers"
@@ -171,7 +171,7 @@ func (qb *SceneMarkerStore) FindMany(ctx context.Context, ids []int) ([]*models.
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}

View File

@@ -9,7 +9,7 @@ import (
"testing"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/sliceutil/stringslice"
"github.com/stretchr/testify/assert"
)
@@ -112,7 +112,7 @@ func verifyIDs(t *testing.T, modifier models.CriterionModifier, values []int, re
case models.CriterionModifierNotEquals:
foundAll := true
for _, v := range values {
if !intslice.IntInclude(results, v) {
if !sliceutil.Contains(results, v) {
foundAll = false
break
}

View File

@@ -15,7 +15,7 @@ import (
"time"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stretchr/testify/assert"
)
@@ -2376,12 +2376,12 @@ func TestSceneQueryPath(t *testing.T) {
mustInclude := indexesToIDs(sceneIDs, tt.mustInclude)
mustExclude := indexesToIDs(sceneIDs, tt.mustExclude)
missing := intslice.IntExclude(mustInclude, got.IDs)
missing := sliceutil.Exclude(mustInclude, got.IDs)
if len(missing) > 0 {
t.Errorf("SceneStore.TestSceneQueryPath() missing expected IDs: %v", missing)
}
notExcluded := intslice.IntIntercect(mustExclude, got.IDs)
notExcluded := sliceutil.Intersect(mustExclude, got.IDs)
if len(notExcluded) > 0 {
t.Errorf("SceneStore.TestSceneQueryPath() expected IDs to be excluded: %v", notExcluded)
}

View File

@@ -15,7 +15,7 @@ import (
"time"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/sqlite"
"github.com/stashapp/stash/pkg/txn"
@@ -1506,7 +1506,7 @@ func getTagMarkerCount(id int) int {
count := 0
idx := indexFromID(tagIDs, id)
for _, s := range markerSpecs {
if s.primaryTagIdx == idx || intslice.IntInclude(s.tagIdxs, idx) {
if s.primaryTagIdx == idx || sliceutil.Contains(s.tagIdxs, idx) {
count++
}
}

View File

@@ -13,7 +13,7 @@ import (
"gopkg.in/guregu/null.v4/zero"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/studio"
)
@@ -240,7 +240,7 @@ func (qb *StudioStore) FindMany(ctx context.Context, ids []int) ([]*models.Studi
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}

View File

@@ -14,8 +14,6 @@ import (
"github.com/stashapp/stash/pkg/logger"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil/stringslice"
)
type table struct {
@@ -202,7 +200,7 @@ func (t *joinTable) insertJoins(ctx context.Context, id int, foreignIDs []int) e
defer stmt.Close()
// eliminate duplicates
foreignIDs = intslice.IntAppendUniques(nil, foreignIDs)
foreignIDs = sliceutil.AppendUniques(nil, foreignIDs)
for _, fk := range foreignIDs {
if _, err := tx.ExecStmt(ctx, stmt, id, fk); err != nil {
@@ -229,7 +227,7 @@ func (t *joinTable) addJoins(ctx context.Context, id int, foreignIDs []int) erro
}
// only add foreign keys that are not already present
foreignIDs = intslice.IntExclude(foreignIDs, fks)
foreignIDs = sliceutil.Exclude(foreignIDs, fks)
return t.insertJoins(ctx, id, foreignIDs)
}
@@ -440,7 +438,7 @@ func (t *stringTable) addJoins(ctx context.Context, id int, v []string) error {
}
// only add values that are not already present
filtered := stringslice.StrExclude(v, existing)
filtered := sliceutil.Exclude(v, existing)
return t.insertJoins(ctx, id, filtered)
}

View File

@@ -14,7 +14,7 @@ import (
"gopkg.in/guregu/null.v4/zero"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/sliceutil/intslice"
"github.com/stashapp/stash/pkg/sliceutil"
)
const (
@@ -205,7 +205,7 @@ func (qb *TagStore) FindMany(ctx context.Context, ids []int) ([]*models.Tag, err
}
for _, s := range unsorted {
i := intslice.IntIndex(ids, s.ID)
i := sliceutil.Index(ids, s.ID)
ret[i] = s
}