package couchbase import ( "context" "fmt" "reflect" "strings" "github.com/couchbase/gocb/v2" ) func GetSetFields(webhookMap map[string]interface{}) (string, map[string]interface{}) { params := make(map[string]interface{}, 1) updateFields := "" for key, value := range webhookMap { if key == "_id" { continue } if key == "_key" { continue } if value == nil { updateFields += fmt.Sprintf("%s=$%s,", key, key) params[key] = "null" continue } valueType := reflect.TypeOf(value) if valueType.Name() == "string" { updateFields += fmt.Sprintf("%s = $%s, ", key, key) params[key] = value.(string) } else { updateFields += fmt.Sprintf("%s = $%s, ", key, key) params[key] = value } } updateFields = strings.Trim(updateFields, " ") updateFields = strings.TrimSuffix(updateFields, ",") return updateFields, params } func (p *provider) GetTotalDocs(ctx context.Context, collection string) (int64, error) { totalDocs := TotalDocs{} countQuery := fmt.Sprintf("SELECT COUNT(*) as Total FROM %s.%s", p.scopeName, collection) queryRes, err := p.db.Query(countQuery, &gocb.QueryOptions{ Context: ctx, }) queryRes.One(&totalDocs) if err != nil { return 0, err } return totalDocs.Total, nil } type TotalDocs struct { Total int64 }