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

######################################################################################################
# 
# Here you can configure the rules for the proxy.
# This example is configuration of encrypt rule.
#   
# If you want to use encrypt, please refer to this file; 
# if you want to use sharding, please refer to the config-sharding.yaml.
# if you want to use master-slave, please refer to the config-master-slave.yaml.
# 
######################################################################################################
#
#schemaName: encrypt_db
#
#dataSource:
#  url: jdbc:postgresql://sharding-proxy-mysql:5432/demo_ds?serverTimezone=UTC&useSSL=false
#  username: postgres
#  password: postgres
#  connectionTimeoutMilliseconds: 30000
#  idleTimeoutMilliseconds: 60000
#  maxLifetimeMilliseconds: 1800000
#  maxPoolSize: 50
#
#encryptRule:
#  encryptors:
#    encryptor_aes:
#      type: aes
#      props:
#        aes.key.value: 123456abc
#    encryptor_md5:
#      type: md5
#  tables:
#    t_encrypt:
#      columns:
#        user_id:
#          plainColumn: user_plain
#          cipherColumn: user_cipher
#          encryptor: encryptor_aes
#        order_id:
#          cipherColumn: order_encrypt
#          encryptor: encryptor_md5

######################################################################################################
#
# If you want to connect to MySQL, you should manually copy MySQL driver to lib directory.
#
######################################################################################################
#
schemaName: encrypt_db

dataSource:
  url: jdbc:postgresql://proxy-postgresql:5432/shardingsphere?currentSchema=demo_ds
  username: postgres
  password:
  connectionTimeoutMilliseconds: 30000
  idleTimeoutMilliseconds: 60000
  maxLifetimeMilliseconds: 1800000
  maxPoolSize: 50

encryptRule:
  encryptors:
    encryptor_aes:
      type: aes
      props:
        aes.key.value: 123456abc
    encryptor_md5:
      type: md5
  tables:
    t_user:
      columns:
        user_name:
          plainColumn: user_name
          cipherColumn: user_name_cipher
          encryptor: encryptor_md5
          
        pwd:
          plainColumn: pwd_plain
          cipherColumn: pwd_cipher
          encryptor: encryptor_md5
