# ===============================================
# LOGGING
# ===============================================

extend type Query {
  logging: LoggingQuery
}

extend type Mutation {
  logging: LoggingMutation
}

extend type Subscription {
  loggingLiveTrail: LoggerTrailLine
}

# -----------------------------------------------
# QUERIES
# -----------------------------------------------

type LoggingQuery {
  loggers(
    filter: String
    orderBy: String
  ): [Logger] @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# MUTATIONS
# -----------------------------------------------

type LoggingMutation {
  updateLoggers(
    loggers: [LoggerInput]
  ): DefaultResponse @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# TYPES
# -----------------------------------------------

type Logger {
  isEnabled: Boolean!
  key: String!
  title: String!
  description: String
  logo: String
  website: String
  level: String
  config: [KeyValuePair]
}

input LoggerInput {
  isEnabled: Boolean!
  key: String!
  level: String!
  config: [KeyValuePairInput]
}

type LoggerTrailLine {
  level: String!
  output: String!
  timestamp: Date!
}
