#
# 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.
#

fineract.node-id=1

fineract.security.basicauth.enabled=true
fineract.security.oauth.enabled=false
fineract.security.2fa.enabled=false

fineract.tenant.host=localhost
fineract.tenant.port=3306
fineract.tenant.username=root
fineract.tenant.password=mysql
fineract.tenant.parameters=
fineract.tenant.timezone=Asia/Kolkata
fineract.tenant.identifier=default
fineract.tenant.name=fineract_default
fineract.tenant.description=Default Demo Tenant

management.health.jms.enabled=false

# FINERACT 1296
management.endpoint.health.probes.enabled=true
management.health.livenessState.enabled=true
management.health.readinessState.enabled=true

# FINERACT-883
management.info.git.mode=FULL
management.endpoints.web.exposure.include=health,info

# FINERACT-914
server.forward-headers-strategy=framework
server.port=8443
server.servlet.context-path=/fineract-provider
server.compression.enabled=true

server.ssl.enabled=true
server.ssl.protocol=TLS
server.ssl.key-store=keystore.jks
server.ssl.key-store-password=openmf

spring.datasource.hikari.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.hikari.jdbcUrl=jdbc:mariadb://localhost:3306/fineract_tenants
spring.datasource.hikari.username=root
spring.datasource.hikari.password=mysql
spring.datasource.hikari.minimumIdle=3
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.idleTimeout=60000
spring.datasource.hikari.connectionTimeout=20000
spring.datasource.hikari.connectionTestQuery=SELECT 1
spring.datasource.hikari.autoCommit=true
spring.datasource.hikari.dataSourceProperties['cachePrepStmts']=true
spring.datasource.hikari.dataSourceProperties['prepStmtCacheSize']=250
spring.datasource.hikari.dataSourceProperties['prepStmtCacheSqlLimit']=2048
spring.datasource.hikari.dataSourceProperties['useServerPrepStmts']=true
spring.datasource.hikari.dataSourceProperties['useLocalSessionState']=true
spring.datasource.hikari.dataSourceProperties['rewriteBatchedStatements']=true
spring.datasource.hikari.dataSourceProperties['cacheResultSetMetadata']=true
spring.datasource.hikari.dataSourceProperties['cacheServerConfiguration']=true
spring.datasource.hikari.dataSourceProperties['elideSetAutoCommits']=true
spring.datasource.hikari.dataSourceProperties['maintainTimeStats']=false
spring.datasource.hikari.dataSourceProperties['logSlowQueries']=true
spring.datasource.hikari.dataSourceProperties['dumpQueriesOnException']=true
