type Translation{
    id:ID
    locale:String
    group:String
    key:String
    value:String
}

input InputTranslation{
        locale:String!
        group:String!
        key:String!
        value:String!
}

input UpdateTranslation{
        id:ID
        locale:String!
        group:String!
        key:String!
        value:String!
}

type TranslationGroup{
    group:String
}

extend type Query {
    findTranslations:JSON @field(resolver:"TranslationQuery@getTranslations")
    findAllTranslations:[Translation] @all @orderBy(column: "id", direction: ASC) @guard
    findTranslationsByID(id: Int @where(operator: "=")) :[Translation] @all @guard
    findTranslationsByIDs(ids: [ID]) :[Translation] @field(resolver:"TranslationQuery@getTranslationsByIDs") @guard
    findTranslationsByGroup(group: String @where(operator: "=")): [Translation!]! @all @guard
    publishTranslations:String @field(resolver:"TranslationQuery@publishTranslations") @guard
    findAllGroups: [TranslationGroup] @field(resolver:"TranslationQuery@getGroups") @orderBy(column: "id", direction: ASC) @guard
}

extend type Mutation {
    createTranslation(input:[InputTranslation]):String @field(resolver:"TranslationMutation@create") @guard @canAccess(requiredRole: ["admin"])

    updateTranslation(input:[UpdateTranslation]):String @field(resolver:"TranslationMutation@update") @guard @canAccess(requiredRole: ["admin"])

    removeTranslation(id:[ID]!):String @field(resolver: "TranslationMutation@deleteAllTranslations") @guard @canAccess(requiredRole: ["admin"])
}
