Files
animethemes-server/graphql/Models/Wiki/anime.graphql
T
2026-07-09 14:04:08 -03:00

149 lines
6.1 KiB
GraphQL

"""
Represents a production with at least one opening or ending sequence.
For example, Bakemonogatari is an anime production with five opening sequences and one ending sequence.
"""
type Anime @model(class: "App\\Models\\Wiki\\Anime") {
"The primary key of the resource"
id: Int! @rename(attribute: "anime_id")
"The primary title of the anime"
name: String!
"The format of the anime"
format: AnimeFormat
"The formatted string value of the format field"
formatLocalized: String @localized
"The premiere season of the anime"
season: AnimeSeason
"The formatted string value of the season field"
seasonLocalized: String @localized
"The URL slug & route key of the resource"
slug: String!
"The brief summary of the anime"
synopsis: String
"The premiere year of the anime"
year: Int @deprecated(reason: "Use the `startDate.year` field instead.")
"The premiere date of the anime, with a fuzzy date representation"
startDate: FuzzyDate @rename(attribute: "start_date")
"The end date of the anime, with a fuzzy date representation"
endDate: FuzzyDate @rename(attribute: "end_date")
"The URL for the anime page on the website"
siteUrl: String! @field(resolver: "App\\GraphQL\\Types\\AnimeType@resolveSiteUrlAttribute")
"The date that the resource was created"
createdAt(format: String! = "Y-m-d H:i:s"): String @timestamp(attribute: "created_at")
"The date that the resource was updated"
updatedAt(format: String! = "Y-m-d H:i:s"): String @timestamp(attribute: "updated_at")
synonyms(
type: SynonymType @eq
where: _ @whereConditions(columnsEnum: SynonymFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [SynonymSort!] @sort
): [Synonym!]! @morphMany
animethemes(
type: ThemeType @eq
type_in: [ThemeType!] @in(key: "type")
sequence: Int @eq
sequence_lesser: Int @where(operator: "<", key: "sequence")
sequence_greater: Int @where(operator: ">", key: "sequence")
slug: String @eq
where: _ @whereConditions(columnsEnum: AnimeThemeFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [AnimeThemeSort!] @sort
): [AnimeTheme!]! @hasManyCustom(type: SIMPLE)
images(
facet: ImageFacet @eq
path_like: String @like(key: "path")
where: _ @whereConditions(columnsEnum: ImageFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [ImageSort!] @sort
): [Image!]! @belongsToManyCustom(type: CONNECTION, edgeType: "ImageEdge")
resources(
site: ResourceSite @eq
externalId: Int @eq(key: "external_id")
where: _ @whereConditions(columnsEnum: ExternalResourceFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [ExternalResourceSort!] @sort
): [ExternalResource!]! @belongsToManyCustom(type: CONNECTION, edgeType: "ExternalResourceEdge")
series(
name_like: String @like(key: "name")
where: _ @whereConditions(columnsEnum: SeriesFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [SeriesSort!] @sort
): [Series!]! @belongsToManyCustom(type: CONNECTION, edgeType: "AnimeSeriesEdge")
studios(
name_like: String @like(key: "name")
where: _ @whereConditions(columnsEnum: StudioFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [StudioSort!] @sort
): [Studio!]! @belongsToManyCustom(type: CONNECTION, edgeType: "AnimeStudioEdge")
}
type AnimeSeriesEdge @model(class: "App\\Pivots\\Wiki\\AnimeSeries") {
"The Series node."
node: Series!
"The date that the resource was created"
createdAt(format: String! = "Y-m-d H:i:s"): String @timestamp(attribute: "created_at")
"The date that the resource was updated"
updatedAt(format: String! = "Y-m-d H:i:s"): String @timestamp(attribute: "updated_at")
}
type AnimeStudioEdge @model(class: "App\\Pivots\\Wiki\\AnimeStudio") {
"The Studio node."
node: Studio!
"The date that the resource was created"
createdAt(format: String! = "Y-m-d H:i:s"): String @timestamp(attribute: "created_at")
"The date that the resource was updated"
updatedAt(format: String! = "Y-m-d H:i:s"): String @timestamp(attribute: "updated_at")
}
extend type Query {
"Returns an anime resource."
anime(slug: String! @eq): Anime @find(model: "App\\Models\\Wiki\\Anime")
"Filter anime by its external id on given site."
findAnimeByExternalSite(
site: ResourceSite!
id: [Int!]
link: String
): [Anime!]! @builder(method: "App\\GraphQL\\Builders\\FindAnimeByExternalSiteBuilder") @all
"Returns a listing of anime resources given fields."
animePagination(
id: Int @eq(key: "anime_id")
search: String @search
name: String @eq
name_like: String @like(key: "name")
format: AnimeFormat @eq
format_in: [AnimeFormat!] @in(key: "format")
season: AnimeSeason @eq
season_in: [AnimeSeason!] @in(key: "season")
slug: String @eq
year: Int @eq @deprecated(reason: "Use the `startDate` filter instead.")
year_lesser: Int @where(operator: "<", key: "year") @deprecated(reason: "Use the `startDate_lesser` filter instead.")
year_greater: Int @where(operator: ">", key: "year") @deprecated(reason: "Use the `startDate_greater` filter instead.")
startDate: FuzzyDateInt @eq(key: "start_date")
startDate_lesser: FuzzyDateInt @where(operator: "<", key: "start_date")
startDate_greater: FuzzyDateInt @where(operator: ">", key: "start_date")
endDate: FuzzyDateInt @eq(key: "end_date")
endDate_lesser: FuzzyDateInt @where(operator: "<", key: "end_date")
endDate_greater: FuzzyDateInt @where(operator: ">", key: "end_date")
where: _ @whereConditions(columnsEnum: AnimeFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
sort: [AnimeSort!] @sort
): [Anime!]! @paginate
}