credit_tracker/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml

199 lines
No EOL
6.8 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.UserPackageMapper">
<resultMap id="packageDataResultMap" type="ru.nbch.credit_tracker.entities.app.UserPackage">
<result property="id" column="id"/>
<result property="userId" column="membercode"/>
<result property="packageName" column="package_name"/>
<result property="createdAt" column="created_at"/>
<result property="status" column="status"/>
<result property="deactivatedAt" column="deactivated_at"/>
<result property="lastDownloadedReport" column="last_downloaded_report"/>
<result property="monitoringAt" column="monitoring_at"/>
<result property="lastSearchedAt" column="last_searched_at"/>
<result property="rejectStatus" column="reject_status"/>
<result property="signalTypes" column="signal_types"/>
<result property="externalPackageName" column="external_package_name"/>
</resultMap>
<select id="isPackageNotUnique" resultType="boolean">
SELECT COUNT(*) > 0
FROM signals_user_packages
WHERE membercode IS NOT NULL
AND LEFT(membercode, 6) = #{userId}
AND package_name = #{packageName}
</select>
<select id="isPackageExists" resultType="boolean">
SELECT COUNT(*) > 0
FROM signals_user_packages
WHERE membercode IS NOT NULL
AND LEFT(membercode, 6) = #{userId}
AND package_name = #{packageName}
AND status = #{status}
</select>
<select id="hasActivePackages" resultType="boolean">
SELECT COUNT(*) > 0
FROM signals_user_packages
WHERE membercode IS NOT NULL
AND LEFT(membercode, 6) = #{userId}
AND package_name = #{packageName}
AND status IN
<foreach item="status" collection="statuses" open="(" separator="," close=")">
#{status}
</foreach>
</select>
<update id="deletePackage">
UPDATE signals_user_packages
SET status = #{status}, deactivated_at = #{deactivatedAt}
WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} AND package_name = #{packageName} AND status =
#{previousStatus}
</update>
<update id="deletePackageById">
UPDATE signals_user_packages
SET status = #{status}, deactivated_at = #{deactivatedAt}
WHERE id =#{id}
</update>
<select id="insertPackage" resultType="java.lang.Long"
parameterType="ru.nbch.credit_tracker.entities.app.UserPackage">
INSERT INTO signals_user_packages (membercode, package_name, signal_types, created_at, status, external_package_name)
values (#{userPackage.userId}, #{userPackage.packageName}, #{userPackage.signalTypes}, #{userPackage.createdAt}, #{userPackage.status}, concat(substring(#{userPackage.userId}, 1, 6), '_', #{userPackage.packageName})) RETURNING id
</select>
<update id="updatePackageStatus">
UPDATE signals_user_packages
SET status = #{status}
WHERE id = #{packageId}
</update>
<update id="updatePackageLastDownloadedReport">
UPDATE signals_user_packages
SET last_downloaded_report = #{fileName}
WHERE id = #{id}
</update>
<update id="updatePackageOnMonitoringSuccess">
UPDATE signals_user_packages
SET monitoring_at = #{monitoringAt}, status = 'ON_MONITORING'
WHERE id = #{id}
</update>
<update id="setLastSearchedDt">
UPDATE signals_user_packages
SET last_searched_at = now()
WHERE id = #{id}
</update>
<update id="setRejectedStatus">
UPDATE signals_user_packages
SET reject_status = #{status}
WHERE id = #{id}
</update>
<select id="findPackage" resultMap="packageDataResultMap">
SELECT id,
membercode,
package_name,
created_at,
status,
deactivated_at,
last_downloaded_report,
monitoring_at,
last_searched_at,
reject_status,
signal_types
FROM signals_user_packages
WHERE id = #{id}
LIMIT 1
</select>
<select id="findUserPackages" resultMap="packageDataResultMap">
SELECT id,
membercode,
package_name,
created_at,
status,
deactivated_at,
last_downloaded_report,
monitoring_at,
last_searched_at,
reject_status,
signal_types
FROM signals_user_packages
WHERE membercode IS NOT NULL
AND LEFT(membercode, 6) = #{userId}
AND status IN
<foreach item="status" collection="statuses" open="(" separator="," close=")">
#{status}
</foreach>
</select>
<select id="findAllPackagesByUserId" resultMap="packageDataResultMap">
SELECT id,
membercode,
package_name,
created_at,
status,
deactivated_at,
last_downloaded_report,
monitoring_at,
last_searched_at,
reject_status,
signal_types
FROM signals_user_packages
WHERE membercode IS NOT NULL
AND LEFT(membercode, 6) = #{userId}
</select>
<select id="findAllPackagesByStatus" resultMap="packageDataResultMap">
SELECT id,
membercode,
package_name,
created_at,
status,
deactivated_at,
last_downloaded_report,
monitoring_at,
last_searched_at,
reject_status,
signal_types
FROM signals_user_packages
WHERE status in
<foreach collection="statuses" item="status" separator="," open="(" close=")">
#{status}
</foreach>
</select>
<select id="findByMemberCodeAndPackageName" resultMap="packageDataResultMap">
SELECT id,
membercode,
package_name,
created_at,
status,
deactivated_at,
last_downloaded_report,
monitoring_at,
last_searched_at,
reject_status,
signal_types
FROM signals_user_packages
WHERE LEFT(membercode, 6) = #{memberCode} AND package_name = #{packageName}
</select>
<select id="hasOldRow" resultType="java.lang.Boolean">
select EXISTS(SELECT 1
FROM signals_user_packages
WHERE id = #{packageId}
AND last_searched_at &lt; now() - make_interval(days => #{daysCount})
)
</select>
</mapper>