Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,18 @@ jobs:
- name: Build
run: make build

go-security-check:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout Source
uses: actions/checkout@v2
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: ./...

lint:
runs-on: ubuntu-latest
env:
Expand Down
90 changes: 90 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
run:
timeout: 5m
skip-dirs: []
skip-files: []
allow-parallel-runners: true

output:
format: colored-line-number
print-issued-lines: true
print-linter-name: true
uniq-by-line: true
sort-results: true

linters-settings:
depguard:
list-type: blacklist
packages:
# logging is allowed only by logutils.Log, logrus
# is allowed to use only in logutils package
- github.com/sirupsen/logrus
packages-with-error-message:
- github.com/sirupsen/logrus: "logging is allowed only by logutils.Log"
goconst:
min-len: 2
min-occurrences: 3
gocritic:
enabled-tags:
- diagnostic
- experimental
- opinionated
- performance
- style
disabled-checks:
- dupImport # https://github.com/go-critic/go-critic/issues/845
- ifElseChain
- octalLiteral
- whyNoLint
- wrapperFunc
- unnecessaryBlock
gocyclo:
min-complexity: 15
goimports:
local-prefixes: github.com/golangci/golangci-lint

govet:
settings:
printf:
funcs:
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
misspell:
locale: US
nolintlint:
allow-leading-space: true # don't require machine-readable nolint directives (i.e. with no leading space)
allow-unused: false # report any unused nolint directives
require-explanation: false # don't require an explanation for nolint directives
require-specific: false # don't require nolint directives to be specific about which linter is being skipped

linters:
disable-all: true
enable:
- bodyclose
- deadcode
- depguard
- dogsled
- errcheck
- exportloopref
- goconst
- gocritic
- gocyclo
- gofmt
- goimports
- goprintffuncname
- gosimple
- govet
- ineffassign
- misspell
- nakedret
- noctx
- nolintlint
- staticcheck
- structcheck
- typecheck
- unconvert
- unparam
- unused
- varcheck
- whitespace
1 change: 0 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ repos:
- id: go-fmt
- id: go-imports
- id: golangci-lint
args: [--timeout=5m]
# - id: go-cyclo
# args: [-over=20]
- repo: local
Expand Down
4 changes: 2 additions & 2 deletions internal/database/dbutil/db_opt.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (d *DBOpt) ExecContext(ctx context.Context, query string, args ...interface
}
}

func (d *DBOpt) BuildInsertQuery(tableName string, records []interface{}, columns []string) (string, []interface{}, error) {
func (d *DBOpt) BuildInsertQuery(tableName string, records []interface{}, columns []string) (query string, args []interface{}, err error) {
if len(records) == 0 {
return "", nil, nil
}
Expand All @@ -60,7 +60,7 @@ func (d *DBOpt) BuildInsertQuery(tableName string, records []interface{}, column
if d.Backend == types.BackendBigQuery {
tableName = fmt.Sprintf("%s.%s", *d.DatasetID, tableName)
}
query, args, err := sqlx.In(
query, args, err = sqlx.In(
fmt.Sprintf(`INSERT INTO %s (%s) VALUES %s`, tableName, columnStr, strings.Join(valueFlags, ",")),
records...)
return query, args, errdefs.WithStack(err)
Expand Down
5 changes: 2 additions & 3 deletions internal/database/dbutil/deserialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,8 @@ func rdbDeserializer(i interface{}, valueType types.ValueType) (interface{}, err
}

func cassandraDeserializer(i interface{}, valueType types.ValueType) (interface{}, error) {
switch i.(type) {
case string:
if i == "" {
if v, ok := i.(string); ok {
if v == "" {
return nil, nil
}
}
Expand Down
4 changes: 2 additions & 2 deletions internal/database/dbutil/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func createTableDDL(tableName string, columns ColumnList, pkFields []string, bac
return fmt.Sprintf("CREATE TABLE %s (\n%s\n)", tableName, tableDef)
}

func BuildIndexDDL(tableName string, indexName string, fields []string, backend types.BackendType) string {
func BuildIndexDDL(tableName, indexName string, fields []string, backend types.BackendType) string {
qt := QuoteFn(backend)

// Some db like postgres, sqlite index must be database unique,
Expand Down Expand Up @@ -114,5 +114,5 @@ func parseColumns(entityName string, hasUnixMilli bool, features types.FeatureLi
rs = append(rs, Column{Name: f.Name, DbType: dbType, ValueType: f.ValueType})
}
}
return
return rs
}
6 changes: 3 additions & 3 deletions internal/database/dbutil/serialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func kvSerializerByValueType(i interface{}, valueType types.ValueType) (s interf
case types.String:
return i.(string), nil
case types.Int64:
return strconv.FormatInt(int64(i.(int64)), serializeIntBase), nil
return strconv.FormatInt(i.(int64), serializeIntBase), nil
case types.Float64:
return strconv.FormatFloat(i.(float64), 'f', -1, 64), nil
case types.Bool:
Expand Down Expand Up @@ -108,7 +108,7 @@ func kvSerializerByValue(i interface{}) (string, error) {
case int:
return strconv.FormatInt(int64(s), serializeIntBase), nil
case int64:
return strconv.FormatInt(int64(s), serializeIntBase), nil
return strconv.FormatInt(s, serializeIntBase), nil
case int32:
return strconv.FormatInt(int64(s), serializeIntBase), nil
case int16:
Expand All @@ -124,7 +124,7 @@ func kvSerializerByValue(i interface{}) (string, error) {
case uint:
return strconv.FormatUint(uint64(s), serializeIntBase), nil
case uint64:
return strconv.FormatUint(uint64(s), serializeIntBase), nil
return strconv.FormatUint(s, serializeIntBase), nil
case uint32:
return strconv.FormatUint(uint64(s), serializeIntBase), nil
case uint16:
Expand Down
8 changes: 4 additions & 4 deletions internal/database/dbutil/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ import (
"strings"

"github.com/jmoiron/sqlx"
"github.com/oom-ai/oomstore/pkg/errdefs"

"github.com/oom-ai/oomstore/pkg/errdefs"
"github.com/oom-ai/oomstore/pkg/oomstore/types"
)

func BuildConditions(equal map[string]interface{}, in map[string]interface{}) ([]string, []interface{}, error) {
cond := make([]string, 0)
args := make([]interface{}, 0)
func BuildConditions(equal, in map[string]interface{}) (cond []string, args []interface{}, err error) {
cond = make([]string, 0)
args = make([]interface{}, 0)
for key, value := range equal {
cond = append(cond, fmt.Sprintf("%s = ?", key))
args = append(args, value)
Expand Down
18 changes: 9 additions & 9 deletions internal/database/dbutil/util.go
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package dbutil

import (
"crypto/rand"
"fmt"
"math/rand"
"math/big"
"strings"
"time"
)

var random *rand.Rand

func init() {
random = rand.New(rand.NewSource(time.Now().UnixNano()))
}

type RowMap = map[string]interface{}

func TempTable(prefix string) string {
Expand All @@ -21,15 +16,20 @@ func TempTable(prefix string) string {

var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")

func randInt(size int) int {
n, _ := rand.Int(rand.Reader, big.NewInt(int64(size)))
return int(n.Int64())
}

func RandString(n int) string {
b := make([]rune, n)
for i := range b {
b[i] = letterRunes[random.Intn(len(letterRunes))]
b[i] = letterRunes[randInt(len(letterRunes))]
}
return string(b)
}

func Fill(size int, elem string, sep string) string {
func Fill(size int, elem, sep string) string {
r := make([]string, 0, size)

for i := 0; i < size; i++ {
Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/mysql/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (db *DB) GetFeature(ctx context.Context, id int) (*types.Feature, error) {
return sqlutil.GetFeature(ctx, db, id)
}

func (db *DB) GetFeatureByName(ctx context.Context, groupName string, featureName string) (*types.Feature, error) {
func (db *DB) GetFeatureByName(ctx context.Context, groupName, featureName string) (*types.Feature, error) {
return sqlutil.GetFeatureByName(ctx, db, groupName, featureName)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/mysql/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func Open(ctx context.Context, option *types.MySQLOpt) (*DB, error) {
return sqlutil.ListMetadata(ctx, db)
})
if err != nil {
db.Close()
_ = db.Close()
return nil, err
}
return &DB{
Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/mysql/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func (tx *Tx) ListFeature(ctx context.Context, opt metadata.ListFeatureOpt) (typ
return sqlutil.ListFeature(ctx, tx, opt)
}

func (tx *Tx) GetFeatureByName(ctx context.Context, groupName string, featureName string) (*types.Feature, error) {
func (tx *Tx) GetFeatureByName(ctx context.Context, groupName, featureName string) (*types.Feature, error) {
return sqlutil.GetFeatureByName(ctx, tx, groupName, featureName)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/postgres/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func (db *DB) ListFeature(ctx context.Context, opt metadata.ListFeatureOpt) (typ
return sqlutil.ListFeature(ctx, db, opt)
}

func (db *DB) GetFeatureByName(ctx context.Context, groupName string, featureName string) (*types.Feature, error) {
func (db *DB) GetFeatureByName(ctx context.Context, groupName, featureName string) (*types.Feature, error) {
return sqlutil.GetFeatureByName(ctx, db, groupName, featureName)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/postgres/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func Open(ctx context.Context, option *types.PostgresOpt) (*DB, error) {
return sqlutil.ListMetadata(ctx, db)
})
if err != nil {
db.Close()
_ = db.Close()
return nil, err
}
return &DB{
Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/postgres/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func (tx *Tx) ListFeature(ctx context.Context, opt metadata.ListFeatureOpt) (typ
return sqlutil.ListFeature(ctx, tx, opt)
}

func (tx *Tx) GetFeatureByName(ctx context.Context, groupName string, featureName string) (*types.Feature, error) {
func (tx *Tx) GetFeatureByName(ctx context.Context, groupName, featureName string) (*types.Feature, error) {
return sqlutil.GetFeatureByName(ctx, tx, groupName, featureName)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/sqlite/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func (db *DB) GetFeature(ctx context.Context, id int) (*types.Feature, error) {
return sqlutil.GetFeature(ctx, db, id)
}

func (db *DB) GetFeatureByName(ctx context.Context, groupName string, featureName string) (*types.Feature, error) {
func (db *DB) GetFeatureByName(ctx context.Context, groupName, featureName string) (*types.Feature, error) {
return sqlutil.GetFeatureByName(ctx, db, groupName, featureName)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/database/metadata/sqlite/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func Open(ctx context.Context, opt *types.SQLiteOpt) (*DB, error) {
return sqlutil.ListMetadata(ctx, db)
})
if err != nil {
db.Close()
_ = db.Close()
return nil, err
}
return &DB{
Expand Down
3 changes: 1 addition & 2 deletions internal/database/metadata/sqlite/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,8 @@ func (tx *Tx) ListFeature(ctx context.Context, opt metadata.ListFeatureOpt) (typ
return sqlutil.ListFeature(ctx, tx, opt)
}

func (tx *Tx) GetFeatureByName(ctx context.Context, groupName string, featureName string) (*types.Feature, error) {
func (tx *Tx) GetFeatureByName(ctx context.Context, groupName, featureName string) (*types.Feature, error) {
return sqlutil.GetFeatureByName(ctx, tx, groupName, featureName)

}

func (tx *Tx) CreateRevision(ctx context.Context, opt metadata.CreateRevisionOpt) (int, error) {
Expand Down
8 changes: 4 additions & 4 deletions internal/database/metadata/sqlutil/feature.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func GetFeature(ctx context.Context, sqlxCtx metadata.SqlxContext, id int) (*typ
)

query := `SELECT * FROM feature WHERE id = ?`
if err := sqlxCtx.GetContext(ctx, &feature, sqlxCtx.Rebind(query), id); err != nil {
if err = sqlxCtx.GetContext(ctx, &feature, sqlxCtx.Rebind(query), id); err != nil {
if err == sql.ErrNoRows {
return nil, errdefs.NotFound(errdefs.Errorf("feature %d not found", id))
}
Expand All @@ -55,7 +55,7 @@ func GetFeature(ctx context.Context, sqlxCtx metadata.SqlxContext, id int) (*typ
return &feature, nil
}

func GetFeatureByName(ctx context.Context, sqlxCtx metadata.SqlxContext, groupName string, featureName string) (*types.Feature, error) {
func GetFeatureByName(ctx context.Context, sqlxCtx metadata.SqlxContext, groupName, featureName string) (*types.Feature, error) {
var (
feature types.Feature
group *types.Group
Expand Down Expand Up @@ -93,7 +93,7 @@ func ListFeature(ctx context.Context, sqlxCtx metadata.SqlxContext, opt metadata
query = fmt.Sprintf("%s WHERE %s", query, strings.Join(cond, " AND "))
}
query = fmt.Sprintf("%s ORDER BY id ASC", query)
if err := sqlxCtx.SelectContext(ctx, &features, sqlxCtx.Rebind(query), args...); err != nil {
if err = sqlxCtx.SelectContext(ctx, &features, sqlxCtx.Rebind(query), args...); err != nil {
return nil, errdefs.WithStack(err)
}

Expand Down Expand Up @@ -127,7 +127,7 @@ func ListFeature(ctx context.Context, sqlxCtx metadata.SqlxContext, opt metadata
return features, nil
}

func buildListFeatureCond(opt metadata.ListFeatureOpt) ([]string, []interface{}, error) {
func buildListFeatureCond(opt metadata.ListFeatureOpt) (cond []string, args []interface{}, err error) {
in := make(map[string]interface{})
and := make(map[string]interface{})

Expand Down
Loading