@@ -142,20 +142,18 @@ public <T> List<T> filterNewVideos(List<T> videos, Function<T, String> idExtract
142142 }
143143 try {
144144 List <Future <List <T >>> futures = new ArrayList <>();
145-
145+ // sort to avoid deadlocks
146146 List <T > allVideos = videos .stream ()
147147 .sorted (Comparator .comparing (idExtractor ))
148148 .toList ();
149-
150149 for (int i = 0 ; i < allVideos .size (); i += batchSize ) {
151150 int from = i ;
152151 int to = Math .min (i + batchSize , allVideos .size ());
153152 List <T > batch = allVideos .subList (from , to );
154-
155153 futures .add (executorService .submit (() -> {
156154 List <T > newVideos = new ArrayList <>();
157-
158- String sql = "UPDATE filme SET last_seen = now() WHERE id = ?" ;
155+ // update every 7 days
156+ String sql = "UPDATE filme SET last_seen = now() WHERE id = ? AND last_seen - last_update <= interval '7' DAY " ;
159157
160158 try (Connection con = dataSource .getConnection (); PreparedStatement ps = con .prepareStatement (sql )) {
161159
@@ -266,12 +264,11 @@ private int saveBatch(List<Film> films) throws SQLException, IOException {
266264 int successCounter = 0 ;
267265
268266 String sql = """
269- INSERT INTO filme (id, data, created_at, last_update )
270- VALUES (?, ?::jsonb, now(), now() )
267+ INSERT INTO filme (id, data)
268+ VALUES (?, ?::jsonb)
271269 ON CONFLICT (id) DO UPDATE
272270 SET data = EXCLUDED.data,
273- last_update = now(),
274- created_at = filme.created_at
271+ last_update = now()
275272 """ ;
276273
277274 try (Connection con = dataSource .getConnection (); PreparedStatement ps = con .prepareStatement (sql )) {
0 commit comments