Skip to content

Commit

Permalink
feat(hasura): update api
Browse files Browse the repository at this point in the history
  • Loading branch information
harisato committed Jul 28, 2023
1 parent 278e54c commit 3eade4d
Show file tree
Hide file tree
Showing 6 changed files with 200 additions and 150 deletions.
7 changes: 7 additions & 0 deletions hasura/metadata/databases/punkga-pg/tables/public_manga.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ computed_fields:
function:
name: latest_published
schema: public
- name: nearest_upcoming
definition:
function:
name: nearest_upcoming
schema: public
select_permissions:
- role: anonymous
permission:
Expand All @@ -90,6 +95,7 @@ select_permissions:
- updated_at
computed_fields:
- latest_published
- nearest_upcoming
filter: {}
allow_aggregations: true
- role: user
Expand All @@ -105,5 +111,6 @@ select_permissions:
- publish_date
computed_fields:
- latest_published
- nearest_upcoming
filter: {}
allow_aggregations: true
303 changes: 153 additions & 150 deletions hasura/metadata/query_collections.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -385,52 +385,6 @@
bio
}
}
- name: Public - Get subscribe list
query: |
query GetSubscribeList ($user_id: String = "") {
subscribers(order_by: {created_at:desc}, where: {_and:{user_id:{_eq:$user_id},subscribers_manga:{status:{_neq:"Removed"}}}}) {
subscribers_manga {
id
banner
status
manga_languages {
is_main_language
language_id
title
}
manga_creators {
creator {
id
name
isActive
}
}
chapters(order_by: {pushlish_date:desc_nulls_last}, limit: 1, where: {status:{_eq:"Published"}}) {
chapter_number
id
pushlish_date
}
chapters_aggregate {
aggregate {
sum {
likes
views
}
}
}
manga_tags {
tag {
id
tag_languages {
language_id
value
}
}
}
}
user_id
}
}
- name: Admin - Get chapter detail
query: |
query GetChapterDetail ($manga_id: Int = 18, $chapter_number: Int = 1) {
Expand Down Expand Up @@ -539,39 +493,6 @@
}
}
}
- name: Public - Get trending manga
query: |
query GetTrendingManga {
manga(order_by: {manga_total_views:{views:desc_nulls_last}}, limit: 4, where: {status:{_neq:"Removed"}}) {
id
chapters(limit: 1, order_by: {updated_at:desc}, where: {status:{_eq:"Published"}}) {
id
chapter_number
updated_at
}
manga_total_likes {
likes
}
manga_total_views {
views
}
manga_languages {
title
language_id
is_main_language
description
}
banner
poster
manga_creators {
creator {
name
id
isActive
}
}
}
}
- name: Admin - Query List Manga
query: |
query QueryListManga {
Expand Down Expand Up @@ -602,50 +523,6 @@
}
}
}
- name: Public - Get manga list by list id
query: |
query GetListMangaById ($id: [Int!]) {
manga(where: {_and:{id:{_in:$id},status:{_neq:"Removed"}}}) {
id
banner
poster
status
manga_languages {
is_main_language
language_id
title
}
manga_creators {
creator {
id
name
isActive
}
}
chapters(order_by: {pushlish_date:desc_nulls_last}, limit: 1, where: {status:{_eq:"Published"}}) {
chapter_number
id
pushlish_date
}
chapters_aggregate {
aggregate {
sum {
likes
views
}
}
}
manga_tags(limit: 5) {
tag {
id
tag_languages {
language_id
value
}
}
}
}
}
- name: Public - Get manga detail
query: |
query GetMangaReadingDetail ($id: Int = 1, $user_id: String = "") {
Expand Down Expand Up @@ -760,6 +637,133 @@
}
}
}
- name: Public - Get chapter detail
query: |
query GetChapterReadingDetail ($manga_id: Int = 18, $chapter_number: Int = 1, $user_id: String = "") {
chapters(where: {_and:{chapter_number:{_eq:$chapter_number},manga:{_and:{id:{_eq:$manga_id},_or:[{status:{_ilike:"On-going"}},{status:{_eq:"Finished"}}]}}}}) {
id
chapter_number
chapter_name
chapter_type
thumbnail_url
status
pushlish_date
chapter_languages(where: {chapter:{status:{_eq:"Published"}}}) {
language_id
detail
}
comments: social_activities_aggregate {
aggregate {
count
}
}
views
chapters_likes_aggregate {
aggregate {
count
}
}
chapters_likes(where: {user_id:{_eq:$user_id}}) {
id
created_at
user_id
chapter_id
}
}
}
- name: Public - Get manga list by list id
query: |
query GetListMangaById ($id: [Int!]) {
manga(where: {_and:{id:{_in:$id},status:{_neq:"Removed"}}}) {
id
banner
poster
status
nearest_upcoming
manga_languages {
is_main_language
language_id
title
}
manga_creators {
creator {
id
name
isActive
}
}
chapters(order_by: {chapter_number:desc_nulls_last}, limit: 1, where: {status:{_eq:"Published"}}) {
chapter_number
id
pushlish_date
}
chapters_aggregate {
aggregate {
sum {
likes
views
}
}
}
manga_tags(limit: 5) {
tag {
id
tag_languages {
language_id
value
}
}
}
}
}
- name: Public - Get subscribe list
query: |
query GetSubscribeList ($user_id: String = "") {
subscribers(order_by: {created_at:desc}, where: {_and:{user_id:{_eq:$user_id},subscribers_manga:{status:{_neq:"Removed"}}}}) {
subscribers_manga {
id
banner
poster
status
nearest_upcoming
manga_languages {
is_main_language
language_id
title
}
manga_creators {
creator {
id
name
isActive
}
}
chapters(order_by: {chapter_number:desc_nulls_last}, limit: 1, where: {status:{_eq:"Published"}}) {
chapter_number
id
pushlish_date
}
chapters_aggregate {
aggregate {
sum {
likes
views
}
}
}
manga_tags {
tag {
id
tag_languages {
language_id
value
}
}
}
}
user_id
}
}
- name: Public - Query latest update manga
query: |
query GetLatestUpdatedManga {
Expand All @@ -780,7 +784,7 @@
}
}
status
chapters(limit: 1, order_by: {pushlish_date:desc}, where: {status:{_eq:"Published"}}) {
chapters(limit: 1, order_by: {chapter_number:desc}, where: {status:{_eq:"Published"}}) {
id
chapter_number
pushlish_date
Expand All @@ -807,37 +811,36 @@
poster
}
}
- name: Public - Get chapter detail
- name: Public - Get trending manga
query: |
query GetChapterReadingDetail ($manga_id: Int = 18, $chapter_number: Int = 1, $user_id: String = "") {
chapters(where: {_and:{chapter_number:{_eq:$chapter_number},manga:{_and:{id:{_eq:$manga_id},_or:[{status:{_ilike:"On-going"}},{status:{_eq:"Finished"}}]}}}}) {
query GetTrendingManga {
manga(order_by: {manga_total_views:{views:desc_nulls_last}}, limit: 4, where: {status:{_neq:"Removed"}}) {
id
chapter_number
chapter_name
chapter_type
thumbnail_url
status
pushlish_date
chapter_languages(where: {chapter:{status:{_eq:"Published"}}}) {
language_id
detail
chapters(limit: 1, order_by: {chapter_number:desc}, where: {status:{_eq:"Published"}}) {
id
chapter_number
updated_at
}
comments: social_activities_aggregate {
aggregate {
count
}
manga_total_likes {
likes
}
views
chapters_likes_aggregate {
aggregate {
count
}
manga_total_views {
views
}
chapters_likes(where: {user_id:{_eq:$user_id}}) {
id
created_at
user_id
chapter_id
manga_languages {
title
language_id
is_main_language
description
}
banner
poster
manga_creators {
creator {
name
id
isActive
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-- Could not auto-generate a down migration.
-- Please write an appropriate down migration for the SQL below:
-- CREATE OR REPLACE FUNCTION nearest_upcoming(manga_row manga) RETURNS
-- timestamp with time zone
-- AS $$
-- SELECT pushlish_date
-- FROM chapters
-- WHERE chapters.manga_id = manga_row.id AND chapters.status = 'Upcoming'
-- ORDER BY pushlish_date ASC NULLS LAST
-- LIMIT 1
-- $$ LANGUAGE sql STABLE;
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CREATE OR REPLACE FUNCTION nearest_upcoming(manga_row manga) RETURNS
timestamp with time zone
AS $$
SELECT pushlish_date
FROM chapters
WHERE chapters.manga_id = manga_row.id AND chapters.status = 'Upcoming'
ORDER BY pushlish_date ASC NULLS LAST
LIMIT 1
$$ LANGUAGE sql STABLE;
Loading

0 comments on commit 3eade4d

Please sign in to comment.