// Protocol Buffers for Saturnin firebird.log microservices
// Copyright 2019 Firebird Project.  All rights reserved.
// https://www.firebirdsql.org/
// https://saturnin.rtfd.io
//
// License: The MIT License
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom
// the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

syntax = "proto3";

package saturnin.protobuf.fblog;

import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
import "saturnin/protobuf/common.proto";

// Firebird facility codes

enum FirebirdFacility {
  FACILITY_UNKNOWN    = 0 ;
  FACILITY_SYSTEM     = 1 ;
  FACILITY_CONFIG     = 2 ;
  FACILITY_INTL       = 3 ;
  FACILITY_FILEIO     = 4 ;
  FACILITY_USER       = 5 ;
  FACILITY_VALIDATION = 6 ;
  FACILITY_SWEEP      = 7 ;
  FACILITY_PLUGIN     = 8 ;
  FACILITY_GUARDIAN   = 9 ;
  FACILITY_NET        = 10 ;
  FACILITY_AUTH       = 11 ;
}

// Firebird log entry

message LogEntry {
  string                    origin    = 1 ; // [required] Identification of entry source
  google.protobuf.Timestamp timestamp = 2 ; // [required] Creation time
  SeverityLevel             level     = 3 ; // Message severity level
  uint32                    code      = 4 ; // Message code
  FirebirdFacility          facility  = 5 ; // Firebird facility code
  string                    message   = 6 ; // [required] Message text / pattern
  google.protobuf.Struct    params    = 7 ; // Message parameters
}

