123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- enum Network {
- BABYLON
- ALEXANDRIA
- ROME
- }
- type Block @entity {
- "Block number as a string"
- id: ID!
- block: Int!
- timestamp: BigInt!
- network: Network!
- }
- "Stored information about a registered user"
- type Member @entity {
- "MemberId: runtime identifier for a user"
- id: ID!
- "The unique handle chosen by member"
- handle: String @unique @fulltext(query: "membersByHandle")
- "A Url to member's Avatar image"
- avatarUri: String
- "Short text chosen by member to share information about themselves"
- about: String
- "Blocknumber when member was registered"
- registeredAtBlock: Int!
- "Member's controller account id"
- controllerAccount: Bytes!
- "Member's root account id"
- rootAccount: Bytes!
- happenedIn: Block!
- }
- """
- This type is to keep which entity belongs to which class. This type will be used
- by EntityCreated event. When a new schema support added to an Entity we will get the
- class name from this table.
- We need this because we can't create a database row (Channel, Video etc) without
- with empty fields.
- """
- type ClassEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "The class id of this entity"
- classId: Int!
- happenedIn: Block!
- }
- "Keep track of the next entity id"
- type NextEntityId @entity {
- "Constant field is set to '1'"
- id: ID!
- nextId: Int!
- }
- #### High Level Derivative Entities ####
- type Language @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- name: String!
- code: String!
- happenedIn: Block!
- }
- type Channel @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- # "Owner of the channel" Commenting out this field: 'owner' can be curator_group, lead
- # or a member. We are not handling events related to curator group so we will not set this field
- # owner: Member!
- "The title of the Channel"
- handle: String! @fulltext(query: "search")
- "The description of a Channel"
- description: String!
- "Url for Channel's cover (background) photo. Recommended ratio: 16:9."
- coverPhotoUrl: String
- "Channel's avatar photo."
- avatarPhotoUrl: String
- "Flag signaling whether a channel is public."
- isPublic: Boolean!
- "Flag signaling whether a channel is curated/verified."
- isCurated: Boolean!
- "The primary langauge of the channel's content"
- language: Language
- videos: [Video!] @derivedFrom(field: "channel")
- happenedIn: Block!
- }
- type Category @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "The name of the category"
- name: String! @unique @fulltext(query: "categoriesByName")
- "The description of the category"
- description: String
- videos: [Video!] @derivedFrom(field: "category")
- happenedIn: Block!
- }
- "Encoding and containers"
- type VideoMediaEncoding @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- name: String!
- happenedIn: Block!
- }
- type KnownLicenseEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "Short, commonly recognized code of the licence (ie. CC_BY_SA)"
- code: String! @unique
- "Full, descriptive name of the license (ie. Creative Commons - Attribution-NonCommercial-NoDerivs)"
- name: String
- "Short description of the license conditions"
- description: String
- "An url pointing to full license content"
- url: String
- happenedIn: Block!
- }
- type UserDefinedLicenseEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "Custom license content"
- content: String!
- happenedIn: Block!
- }
- type MediaLocationEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- # One of the following field will be non-null
- "A reference to HttpMediaLocation"
- httpMediaLocation: HttpMediaLocationEntity
- "A reference to JoystreamMediaLocation"
- joystreamMediaLocation: JoystreamMediaLocationEntity
- videoMedia: VideoMedia @derivedFrom(field: "locationEntity")
- happenedIn: Block!
- }
- type JoystreamMediaLocationEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "Id of the data object in the Joystream runtime dataDirectory module"
- dataObjectId: String! @unique
- happenedIn: Block!
- }
- type HttpMediaLocationEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "The http url pointing to the media"
- url: String!
- "The port to use when connecting to the http url (defaults to 80)"
- port: Int
- happenedIn: Block!
- }
- type VideoMedia @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "Encoding of the video media object"
- encoding: VideoMediaEncoding!
- "Video media width in pixels"
- pixelWidth: Int!
- "Video media height in pixels"
- pixelHeight: Int!
- "Video media size in bytes"
- size: Int
- video: Video @derivedFrom(field: "media")
- "Location of the video media object"
- location: MediaLocation!
- locationEntity: MediaLocationEntity
- happenedIn: Block!
- }
- type Video @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "Reference to member's channel"
- channel: Channel!
- "Reference to a video category"
- category: Category!
- "The title of the video"
- title: String! @fulltext(query: "search")
- "The description of the Video"
- description: String!
- "Video duration in seconds"
- duration: Int!
- "Video's skippable intro duration in seconds"
- skippableIntroDuration: Int
- "Video thumbnail url (recommended ratio: 16:9)"
- thumbnailUrl: String!
- "Video's main langauge"
- language: Language
- "Reference to VideoMedia"
- media: VideoMedia!
- "Whether or not Video contains marketing"
- hasMarketing: Boolean
- "If the Video was published on other platform before beeing published on Joystream - the original publication date"
- publishedBeforeJoystream: Int
- "Whether the Video is supposed to be publically displayed"
- isPublic: Boolean!
- "Video curation status set by the Curator"
- isCurated: Boolean!
- "Whether the Video contains explicit material."
- isExplicit: Boolean!
- license: LicenseEntity!
- happenedIn: Block!
- "Is video featured or not"
- isFeatured: Boolean!
- featured: FeaturedVideo @derivedFrom(field: "video")
- }
- type JoystreamMediaLocation @variant {
- "Id of the data object in the Joystream runtime dataDirectory module"
- dataObjectId: String!
- }
- type HttpMediaLocation @variant {
- "The http url pointing to the media"
- url: String!
- "The port to use when connecting to the http url (defaults to 80)"
- port: Int
- }
- union MediaLocation = HttpMediaLocation | JoystreamMediaLocation
- type KnownLicense @variant {
- "Short, commonly recognized code of the licence (ie. CC_BY_SA)"
- code: String!
- "Full, descriptive name of the license (ie. Creative Commons - Attribution-NonCommercial-NoDerivs)"
- name: String
- "Short description of the license conditions"
- description: String
- "An url pointing to full license content"
- url: String
- }
- type UserDefinedLicense @variant {
- "Custom license content"
- content: String!
- }
- union License = KnownLicense | UserDefinedLicense
- type LicenseEntity @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- type: License!
- "Attribution (if required by the license)"
- attribution: String
- happenedIn: Block!
- }
- type FeaturedVideo @entity {
- "Runtime entity identifier (EntityId)"
- id: ID!
- "Reference to a video"
- video: Video!
- }
|