SELECT r.id, r.member_id, r.title, r.type, r.amount, r.category, r.memo,
r.wallet_id, w.name AS wallet_name, r.to_wallet_id, tw.name AS to_wallet_name,
r.frequency, r.day_of_month, r.day_of_week, r.month_of_year,
r.start_date, r.end_date, r.last_run_date, r.active
FROM recurring r
LEFT JOIN wallet w ON w.id = r.wallet_id
LEFT JOIN wallet tw ON tw.id = r.to_wallet_id
INSERT INTO recurring (member_id, title, type, amount, category, memo, wallet_id, to_wallet_id,
frequency, day_of_month, day_of_week, month_of_year,
start_date, end_date, last_run_date, active, created_at, updated_at)
VALUES (#{memberId}, #{title}, #{type}, #{amount}, #{category}, #{memo}, #{walletId}, #{toWalletId},
#{frequency}, #{dayOfMonth}, #{dayOfWeek}, #{monthOfYear},
#{startDate}, #{endDate}, #{lastRunDate}, #{active}, NOW(), NOW())
UPDATE recurring
SET title = #{title}, type = #{type}, amount = #{amount}, category = #{category}, memo = #{memo},
wallet_id = #{walletId}, to_wallet_id = #{toWalletId},
frequency = #{frequency}, day_of_month = #{dayOfMonth}, day_of_week = #{dayOfWeek},
month_of_year = #{monthOfYear}, start_date = #{startDate}, end_date = #{endDate}, active = #{active}
WHERE id = #{id} AND member_id = #{memberId}
DELETE FROM recurring WHERE id = #{id} AND member_id = #{memberId}
UPDATE recurring SET last_run_date = #{lastRunDate} WHERE id = #{id}