GraphQL API and utilities for the rpdata project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.8 KiB

  1. -- name: SetTag :exec
  2. INSERT INTO common_tag (tag, target_kind, target_id)
  3. VALUES (
  4. sqlc.arg(tag)::TEXT, sqlc.arg(target_kind)::TEXT, sqlc.arg(target_id)::TEXT
  5. )
  6. ON CONFLICT DO NOTHING;
  7. -- name: SetTags :exec
  8. INSERT INTO common_tag (tag, target_kind, target_id)
  9. SELECT unnest(sqlc.arg(tags)::TEXT[]), sqlc.arg(target_kind)::TEXT as target_kind, sqlc.arg(target_id)::TEXT as target_id
  10. ON CONFLICT DO NOTHING;
  11. -- name: ClearTag :exec
  12. DELETE FROM common_tag
  13. WHERE tag=sqlc.arg(tag)::TEXT
  14. AND target_kind=sqlc.arg(target_kind)::TEXT
  15. AND target_id=sqlc.arg(target_id)::TEXT;
  16. -- name: ClearTagsByTargetLike :exec
  17. DELETE FROM common_tag
  18. WHERE target_kind=sqlc.arg(target_kind)::TEXT
  19. AND target_id=sqlc.arg(target_id)::TEXT
  20. AND tag LIKE sqlc.arg(tag_like)::TEXT;
  21. -- name: ClearTagsByTarget :exec
  22. DELETE FROM common_tag
  23. WHERE target_kind=sqlc.arg(target_kind)::TEXT
  24. AND target_id=sqlc.arg(target_id)::TEXT;
  25. -- name: SelectDistinctTags :many
  26. SELECT DISTINCT tag FROM common_tag ORDER BY tag;
  27. -- name: SelectDistinctTagsLike :many
  28. SELECT DISTINCT tag FROM common_tag WHERE tag LIKE $1::text ORDER BY tag;
  29. -- name: SelectTagsByTag :many
  30. SELECT * FROM common_tag WHERE tag = sqlc.arg(tag_name)::text ORDER BY tag;
  31. -- name: SelectTagsByTags :many
  32. SELECT * FROM common_tag WHERE tag = ANY(sqlc.arg(tag_names)::text[]) ORDER BY tag;
  33. -- name: SelectTargetsByTags :many
  34. SELECT DISTINCT(target_id) FROM common_tag WHERE tag = ANY(sqlc.arg(tag_names)::text[]) AND target_kind = sqlc.arg(target_kind)::text ORDER BY tag;
  35. -- name: SelectTagsByTarget :many
  36. SELECT * FROM common_tag WHERE target_kind = sqlc.arg(target_kind) AND target_id = sqlc.arg(target_id)::text ORDER BY tag;
  37. -- name: SelectTagsByTargets :many
  38. SELECT * FROM common_tag WHERE target_kind = sqlc.arg(target_kind) AND target_id = ANY(sqlc.arg(target_ids)::text[]) ORDER BY tag;