credit_tracker/src/main/resources/mybatis/mapper/signal/SignalsPhonesMapMapper.xml
2025-12-16 17:25:47 +03:00

82 lines
No EOL
3.3 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.PackagesRecordsMapper">
<resultMap id="PhoneFidMapResultMap" type="ru.nbch.credit_tracker.entities.app.PackagesRecordsMap">
<result property="id" column="id"/>
<result property="packageId" column="package_id"/>
<result property="subjectId" column="subject_id"/>
<result property="phone" column="phone"/>
<result property="errorText" column="error_text"/>
</resultMap>
<select id="registerJson" parameterType="string" resultType="long">
WITH src AS (SELECT row_number() OVER () AS rn,
fid,
phone,
name_1,
first,
middle,
birth_dt
FROM json_to_recordset(#{json}::json) AS t(
fid int,
phone bigint,
name_1 varchar(2000),
first varchar(2000),
middle varchar(2000),
birth_dt timestamp
))
INSERT
INTO signals_phones_map
(fid, phone, name_1, first, middle, birth_dt)
SELECT fid,
phone,
name_1,
first,
middle,
birth_dt
FROM src
ORDER BY rn
RETURNING id;
</select>
<update id="setFidJson" parameterType="string">
update signals_phones_map dst
set fid = src.fid,
searched_at = now()
FROM json_to_recordset(#{json}::json) AS src(
id bigint,
fid int
)
where dst.id = src.id;
</update>
<!-- <select id="pageByPackageIdAndOlderThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">-->
<!-- SELECT id,-->
<!-- package_id,-->
<!-- subject_id,-->
<!-- phone,-->
<!-- error_text-->
<!-- FROM signals_phone_fid_map-->
<!-- WHERE package_id = #{packageId} and searched_at &lt; now() - make_interval(days => #{daysCount})-->
<!-- ORDER BY id-->
<!-- LIMIT #{limit} OFFSET #{offset}-->
<!-- </select>-->
<!-- <select id="pageByPackageIdAndNewerThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">-->
<!-- SELECT id,-->
<!-- package_id,-->
<!-- subject_id,-->
<!-- phone,-->
<!-- fid,-->
<!-- error_text-->
<!-- FROM signals_phone_fid_map-->
<!-- WHERE package_id = #{packageId} and searched_at &gt;= now() - make_interval(days => #{daysCount})-->
<!-- ORDER BY id-->
<!-- LIMIT #{limit} OFFSET #{offset}-->
<!-- </select>-->
</mapper>