<?xml version="1.0" encoding="UTF-8"?>
<!-- ~ 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. -->

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.apache.servicecomb.authentication.user.TokenMapper">
  <insert id="insertNewToken">
    insert into
    T_TOKENS(ACCESS_TOKEN_VALUE,REFRESH_TOKEN_VALUE,TOKEN)
    values(#{accessTokenId},#{refreshTokenId},#{tokenInfo})
  </insert>

  <select id="getTokenInfoByAccessTokenId" parameterType="java.lang.String"
    resultType="java.lang.String">
    select TOKEN
    from T_TOKENS where ACCESS_TOKEN_VALUE =
    #{accessTokenId}
  </select>

  <select id="getTokenInfoByRefreshTokenId" parameterType="java.lang.String"
    resultType="java.lang.String">
    select TOKEN
    from T_TOKENS where REFRESH_TOKEN_VALUE =
    #{refreshTokenId}
  </select>
</mapper>