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.9 KiB

  1. -- name: SelectCharacterByID :one
  2. SELECT * FROM data_character WHERE id = sqlc.arg(id)::text;
  3. -- name: SelectCharacterByNick :one
  4. SELECT * FROM data_character WHERE nicks <@ ARRAY[sqlc.arg(nick)::text];
  5. -- name: SelectCharacterByName :one
  6. SELECT * FROM data_character WHERE name = sqlc.arg(name)::text;
  7. -- name: SelectCharacters :many
  8. SELECT * FROM data_character
  9. WHERE (sqlc.arg(filter_id)::bool = false OR id = ANY(sqlc.arg(ids)::text[]))
  10. AND (sqlc.arg(filter_name)::bool = false OR name = ANY(sqlc.arg(names)::text[]))
  11. AND (sqlc.arg(filter_nick)::bool = false OR nicks && (sqlc.arg(nicks)::text[]))
  12. AND (sqlc.arg(filter_author)::bool = false OR author = sqlc.arg(author)::text)
  13. AND (sqlc.arg(filter_search)::bool = false OR "ts_vector" @@ to_tsquery(sqlc.arg(search)::text))
  14. LIMIT sqlc.arg(limit_size)::int;
  15. -- name: InsertCharacter :exec
  16. INSERT INTO data_character (id, nicks, name, short_name, author, description, ts_vector) VALUES (
  17. sqlc.arg(id)::text, sqlc.arg(nicks)::text[], sqlc.arg(name)::text,
  18. sqlc.arg(short_name)::text, sqlc.arg(author)::text, sqlc.arg(description)::text,
  19. to_tsvector(
  20. 'english',
  21. sqlc.arg(name)::text || ' ' || sqlc.arg(description)::text || ' ' || sqlc.arg(author)::text || ' '
  22. || immutable_array_to_string(
  23. sqlc.arg(nicks)::text[], ' '
  24. )
  25. )
  26. );
  27. -- name: UpdateCharacter :exec
  28. UPDATE data_character
  29. SET name=sqlc.arg(name)::text,
  30. short_name=sqlc.arg(short_name)::text,
  31. description=sqlc.arg(description)::text
  32. WHERE id=sqlc.arg(id)::text;
  33. -- name: AddCharacterNick :exec
  34. UPDATE data_character
  35. SET nicks=append(nicks, sqlc.arg(nick)::text)
  36. WHERE id=sqlc.arg(id)::text;
  37. -- name: RemoveCharacterNick :exec
  38. UPDATE data_character
  39. SET nicks=array_remove(nicks, sqlc.arg(nick)::text)
  40. WHERE id=sqlc.arg(id)::text;
  41. -- name: DeleteCharacter :exec
  42. DELETE FROM data_character WHERE id=$1;