package storage

import (
	"encoding/json"
	"fmt"

	stypes "github.com/jmoiron/sqlx/types"
)

func encodeJSONParams(v interface{}) stypes.JSONText {
	raw, _ := json.Marshal(v)
	return stypes.JSONText(raw)
}

func genInClause(field string, values []string) string {
	if len(values) == 0 {
		return ""
	}
	var stmt = " AND " + field + " IN ("
	var sp = ""
	for _, value := range values {
		stmt = fmt.Sprintf("%s%s'%s'", stmt, sp, value)
		sp = ", "
	}

	stmt = stmt + ")"
	return stmt
}

func genLikeClause(field string, value []string) string {
	if len(value) == 0 {
		return ""
	}
	return " AND " + field + " LIKE '%" + value[0] + "%'"
}

func genLimitOffsetClause(limit, offset int64) string {
	if limit == 0 {
		return ""
	}
	return fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset)
}

func intSlice2StringSlice(arr []int64) []string {
	var result []string
	for _, n := range arr {
		result = append(result, fmt.Sprintf("%d", n))
	}
	return result
}
