package ${basePackage}.module.system.mgr;

import ${basePackage}.frame.auth.Token;
import ${basePackage}.module.system.req.TokensBuildRequest;
import ${basePackage}.module.system.req.TokensCreateRequest;
import ${basePackage}.module.system.req.TokensDeleteRequest;
import ${basePackage}.module.system.req.TokensFindRequest;
import ${basePackage}.module.system.req.TokensGetRequest;
import ${basePackage}.module.system.req.TokensLogoutRequest;
import ${basePackage}.module.system.req.TokensUpdateRequest;
import ${basePackage}.module.system.rsp.TokensBuildResponse;
import ${basePackage}.module.system.rsp.TokensCreateResponse;
import ${basePackage}.module.system.rsp.TokensDeleteResponse;
import ${basePackage}.module.system.rsp.TokensFindResponse;
import ${basePackage}.module.system.rsp.TokensGetResponse;
import ${basePackage}.module.system.rsp.TokensLogoutResponse;
import ${basePackage}.module.system.rsp.TokensUpdateResponse;

/**
 * 通行证
 *
 * @author author
 * @version 0.0.1
 * @since 2017-01-01
 */
public interface TokensManager {

    /**
     * 插入
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensCreateResponse create(TokensCreateRequest request, Token token);

    /**
     * 逻辑删除
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensDeleteResponse delete(TokensDeleteRequest request, Token token);

    /**
     * 更新
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensUpdateResponse update(TokensUpdateRequest request, Token token);

    /**
     * 查询
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensFindResponse find(TokensFindRequest request, Token token);

    /**
     * 获得对象
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensGetResponse get(TokensGetRequest request, Token token);

    /**
     * 构建Token
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensBuildResponse build(TokensBuildRequest request, Token token);

    /**
     * 注销Token
     *
     * @param request 请求对象
     * @param token   令牌
     * @return
     */
    TokensLogoutResponse logout(TokensLogoutRequest request, Token token);
}
