package org.test4j.module.dbfit;
import java.sql.SQLException;
import fit.Fixture;
/**
* 在dbfit wiki文件中可以直接使用的数据库操作命令
*
* @author darui.wudr
*/
public interface DbFitOp {
/**
* 使用test4j默认的数据库配置类连接数据库<br>
* wiki语法<br>
*
* <pre>
* |connect|你的数据库schema|
* </pre>
*
* @return
* @throws SQLException
* @throws Exception
*/
boolean connect() throws SQLException;
/**
* 使用指定的driver来建立连接<br>
* wiki语法<br>
*
* <pre>
* |connect|mysql|com.mysql.jdbc.Driver|jdbc:mysql://localhost/test4j?characterEncoding=UTF8|root|password|
* </pre>
*
* @param type 数据库类型
* @param driver 驱动程序
* @param url
* @param username
* @param password
* @return
* @throws Exception
*/
boolean connect(String type, String driver, String url, String username, String password) throws Exception;
/**
* 使用test4j的配置项连接数据库<br>
* wiki语法<br>
*
* <pre>
* |connect from file|dbname|
*
* dbname 定义在test4j.properties文件中的数据库名称
* 定义示例如下
* dbname.database.type=oracle
* dbname.database.url=
* dbname.database.userName=yourdb_test
* dbname.database.password=ca
* dbname.database.driverClassName=
* </pre>
*
* @param dbname 定义在test4j.properties文件中的数据库名称<br>
* @return
* @throws Exception
*/
boolean connectFromFile(String dbname) throws Exception;
/**
* 使用配置文件建立连接,prefix是数据库连接属性前缀 wiki语法<br>
*
* <pre>
* |connect from file|dbname|db.properties|
*
* dbname 定义在db.properties文件中的数据库名称
* 定义示例如下
* dbname.database.type=oracle
* dbname.database.url=jdbc:oracle:thin:@localhost:1523:crms?args[applicationEncoding=UTF-8,databaseEncoding=UTF-8]
* dbname.database.userName=yourdb_test
* dbname.database.password=ca
* dbname.database.driverClassName=
* </pre>
*
* @param dataSourceName 数据库配置的前缀, ${dataSourceName}.database.type =...
* @param propFile 如果为null,则读取test4j配置项
* @return
* @throws Exception
*/
boolean connectFromFile(String dataSourceName, String propFile) throws Exception;
/**
* 设置dbfit wiki文件中用到的变量<br>
* wiki语法
*
* <pre>
* |set parameter|my_name|davey.wu|
*
* 在后续的wiki文件中可以用 @{my_name}引用这个变量
* </pre>
*
* @param name 变量名称
* @param value 变量值
* @return
*/
boolean setParameter(String name, String value);
/**
* query查询结果是单个值,以变量形式存储下来备用<br>
* wiki语法
*
* <pre>
* |store query|select name from your_table where id=1|your_name|
*
* select返回值必须是单行单列的对象,结果被存储到your_name变量中
* 在后续wiki中可以用@{your_name}引用查询出来的对象值
* </pre>
*
* @param para
* @param query
* @return
*/
Fixture storeQuery(String query, String symbolName);
/**
* 清空dbfit的所有非系统变量<br>
*
* <pre>
* dbfit中有4个系统变量
* <code>@{date}</code> 当前日期
* <code>@{datetime}</code> 当前时间
* <code>@{space}</code> 空格
* <code>@{at}</code> @ 字符
* </pre>
*
* @return
*/
boolean clearParameters();
/**
* 验证数据库数据<br>
* wiki语法
*
* <pre>
* |query|select * from your_table where 你的条件|
* |field1|field2|
* |验证数据|验证数据|
* |验证数据|验证数据|
*
* </pre>
*
* @param query 查询sql语句
* @return
*/
Fixture query(String query);
}