feat: add basic graphql support

This commit is contained in:
2025-01-04 20:38:41 +08:00
parent caaa5dc0cc
commit 40cbf86f0f
62 changed files with 4053 additions and 675 deletions

View File

@@ -1,3 +1,4 @@
use async_trait::async_trait;
use loco_rs::app::AppContext;
use sea_orm::{entity::prelude::*, sea_query::OnConflict, ActiveValue, FromJsonQueryResult};
use serde::{Deserialize, Serialize};
@@ -59,6 +60,8 @@ pub enum Relation {
Subscriber,
#[sea_orm(has_many = "super::episodes::Entity")]
Episode,
#[sea_orm(has_many = "super::subscription_bangumi::Entity")]
SubscriptionBangumi,
}
impl Related<super::episodes::Entity> for Entity {
@@ -67,6 +70,12 @@ impl Related<super::episodes::Entity> for Entity {
}
}
impl Related<super::subscription_bangumi::Entity> for Entity {
fn to() -> RelationDef {
Relation::SubscriptionBangumi.def()
}
}
impl Related<super::subscriptions::Entity> for Entity {
fn to() -> RelationDef {
super::subscription_bangumi::Relation::Subscription.def()
@@ -83,6 +92,18 @@ impl Related<super::subscribers::Entity> for Entity {
}
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelatedEntity)]
pub enum RelatedEntity {
#[sea_orm(entity = "super::subscriptions::Entity")]
Subscription,
#[sea_orm(entity = "super::subscribers::Entity")]
Subscriber,
#[sea_orm(entity = "super::episodes::Entity")]
Episode,
#[sea_orm(entity = "super::subscription_bangumi::Entity")]
SubscriptionBangumi,
}
impl Model {
pub async fn get_or_insert_from_mikan<F>(
ctx: &AppContext,
@@ -146,5 +167,5 @@ impl Model {
}
}
#[async_trait::async_trait]
#[async_trait]
impl ActiveModelBehavior for ActiveModel {}