package model import ( "fmt" "strings" ) // queryBindINBuilder 用來動態生成 WHERE 條件和參數 func queryBindINBuilder(baseQuery string, conditions map[string][]any) (string, []any) { args := make([]any, 0) whereClause := make([]string, 0) for column, values := range conditions { if len(values) > 0 { placeholders := strings.Repeat("?,", len(values)) placeholders = placeholders[:len(placeholders)-1] whereClause = append(whereClause, fmt.Sprintf("%s IN (%s)", column, placeholders)) args = append(args, values...) } } // 將 WHERE 條件添加到查詢中 if len(whereClause) > 0 { baseQuery += " WHERE " + strings.Join(whereClause, " AND ") } return baseQuery, args } func convertSliceToInterface[T any](slice []T) []any { result := make([]any, 0, len(slice)) for _, v := range slice { result = append(result, v) } return result }