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

dataSources:
  db: !!com.zaxxer.hikari.HikariDataSource
    driverClassName: org.h2.Driver
    jdbcUrl: jdbc:h2:mem:db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
    username: sa
    password:

shardingRule:
  tables:
    t_account:
      actualDataNodes: db.t_account_${0..1}
      tableStrategy: 
        inline:
          shardingColumn: account_id
          algorithmExpression: t_account_${account_id % 2}
      keyGenerator:
        type: TEST
        column: account_id
    t_account_bak:
      actualDataNodes: db.t_account_bak_${0..1}
      tableStrategy: 
        inline:
          shardingColumn: account_id
          algorithmExpression: t_account_bak_${account_id % 2}
      keyGenerator:
        type: TEST
        column: account_id
    t_account_detail:
      actualDataNodes: db.t_account_detail_${0..1}
      tableStrategy: 
        inline:
          shardingColumn: account_id
          algorithmExpression: t_account_${account_id % 2}
  bindingTables:
    - t_account, t_account_detail
  
  encryptRule:
    tables:
      t_account:
        columns:
          password:
            cipherColumn: cipher_password
            assistedQueryColumn: assisted_query_password
            encryptor: assisted_query
          amount:
            cipherColumn: cipher_amount
            encryptor: normal
      t_account_bak:
        columns:
          password:
            cipherColumn: cipher_password
            assistedQueryColumn: assisted_query_password
            plainColumn: plain_password
            encryptor: assisted_query
          amount:
            cipherColumn: cipher_amount
            plainColumn: plain_amount
            encryptor: normal
    encryptors:
      normal:
        type: NORMAL_ENCRYPT
      assisted_query:
        type: ASSISTED_QUERY_ENCRYPT

props:
  query.with.cipher.column: true
