  #
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

spring:
  cloud:
    discovery:
      enabled: false
    config:
      enabled: false

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    homePageUrl: "http://${eureka.hostname}:2027/deposit/v1/"

server:
  port: 2027
  contextPath: /deposit/v1

cassandra:
  clusterName: staging_cluster
  contactPoints: 127.0.0.1:9042,127.0.0.2:9042,127.0.0.3:9042
  keyspace: seshat
  cl:
    read: LOCAL_QUORUM
    write: LOCAL_QUORUM
    delete: LOCAL_QUORUM

postgresql:
  driverClass: org.postgresql.Driver
  database: seshat
  host: localhost
  port: 5432
  user: postgres
  password: postgres

bonecp:
  idleMaxAgeInMinutes: 240
  idleConnectionTestPeriodInMinutes: 60
  maxConnectionsPerPartition: 10
  minConnectionsPerPartition: 1
  partitionCount: 2
  acquireIncrement: 5
  statementsCacheSize: 100

async:
  corePoolSize: 32
  maxPoolSize: 16384
  queueCapacity: 0
  threadName: async-processor-

flyway:
  enabled: false

config:
  fixedAccountId: true
