const sqlite3 = require('sqlite3').verbose();

const db = new sqlite3.Database('database.sqlite');
const db_old = new sqlite3.Database('db_old.sqlite');


// Створення підїздів
// const sql_1 = `SELECT * FROM areas`;
// db_old.all(sql_1, [], (err, areas) => {
//     if (err) {
//         throw err;
//     }

//     for (let i = 0; i < areas.length; i++) {
//         const area = areas[i];

//         if(area.type == "house"){
//             // console.log(JSON.parse(area.entrance));

//             db.get('SELECT * FROM house WHERE title = ? AND number = ?', [area.address_title, area.address_number], (err, house) => {
//                 if (err) {
//                     console.error(err.message);
//                 } else {
//                     let entrances = JSON.parse(area.entrance);
//                     let entrance_numbers = JSON.parse(area.entrance_number);

//                     for (let q = 0; q < entrances.length; q++) {
//                         const entrance = entrances[q];
//                         const number = entrance_numbers[q];
//                         console.log(entrance, number);
                        
//                         db.run(`INSERT INTO entrance(house_id, entrance_number, title, points, points_number) VALUES(?, ?, ?, ?, ?)`,
//                             [
//                                 house.id,
//                                 q,
//                                 `Під'їзд ${q+1}`,
//                                 JSON.stringify(entrance),
//                                 JSON.stringify(number)
//                             ],
//                             function (err) {
//                                 if (err) {
//                                     console.error(err.message);
//                                 } else {
//                                     console.log("New user entrance added with id " + this.lastID);
//                                 }
//                             }
//                         );
//                     }
                    
//                     // console.log(JSON.parse(area.entrance));  
//                 }
//             })
//         }
//     }
// });



// Міграція історії з старої БД в нову
// const sql_1 = `SELECT * FROM history WHERE date_start >= 1737667735000 ORDER BY date_start`;
// db_old.all(sql_1, [], (err, historys) => {
//     if (err) {
//         throw err;
//     }

//     for (let i = 0; i < historys.length; i++) {
//         const history = historys[i];

//         db_old.get('SELECT * FROM territory WHERE number = ?', [history.territory_number], (err, territory) => {
//             if (err) {
//                 console.error(err.message);
//             } else {
//                 // console.log(territory);
//                 let areas_id = JSON.parse(territory.areas_id)

//                 for (let index = 0; index < areas_id.length; index++) {
//                     const element = areas_id[index];

//                     db_old.get('SELECT * FROM areas WHERE id = ?', [element[0]], (err, area) => {
//                         if (err) {
//                             console.error(err.message);
//                         } else {
//                             if (area.type == "house") {
//                                 console.log(area.address_title, area.address_number);

//                                 db.get('SELECT * FROM house WHERE title = ? AND number = ?', [area.address_title, area.address_number], (err, house) => {
//                                     if (err) {
//                                         console.error(err.message);
//                                     } else {        
//                                         console.log(area.address_title, area.address_number);
//                                         console.log(house.id, element[1]);
                                        
//                                         db.get('SELECT * FROM entrance WHERE house_id = ? AND entrance_number = ?', [house.id, element[1]], (err, entrance) => {
//                                             if (err) {
//                                                 console.error(err.message);
//                                             } else {
//                                                 console.log(house.id, element[1]);                                                
                                                
//                                                 console.log(entrance.id, house.title, house.number, entrance.title);

//                                                 db.run(`INSERT INTO entrance_history(entrance_id, name, date_start, date_end, group_id, working) VALUES(?, ?, ?, ?, ?, ?)`,
//                                                     [
//                                                         entrance.id,
//                                                         history.name,
//                                                         history.date_start,
//                                                         history.date_end,
//                                                         history.group_number,
//                                                         history.working,
//                                                     ],
//                                                     function (err) {
//                                                         if (err) {
//                                                             console.error(err.message);
//                                                         } else {
//                                                             console.log("New user history added with id " + this.lastID);
//                                                         }
//                                                     }
//                                                 );
//                                             }
//                                         })
//                                     }
//                                 })

//                             } else {
//                                 db.get('SELECT * FROM homestead WHERE title = ? AND number = ?', [area.address_title, area.address_number], (err, homestead) => {
//                                     if (err) {
//                                         console.error(err.message);
//                                     } else {
//                                         // console.log(house.id, house.title, house.number);

//                                         db.run(`INSERT INTO homestead_history(homestead_id, name, date_start, date_end, group_id, working) VALUES(?, ?, ?, ?, ?, ?)`,
//                                             [
//                                                 homestead.id,
//                                                 history.name,
//                                                 history.date_start,
//                                                 history.date_end,
//                                                 history.group_number,
//                                                 history.working,
//                                             ],
//                                             function (err) {
//                                                 if (err) {
//                                                     console.error(err.message);
//                                                 } else {
//                                                     console.log("New user history added with id " + this.lastID);
//                                                 }
//                                             }
//                                         );
//                                     }
//                                 })
//                             }
//                         }
//                     })
                    

//                 }


//             }
//         })
//     }
// });


// Додавання ID вісника в entrance_history
// Оновлення кожного запису в entrance_history
db.serialize(() => {
  db.all(`SELECT id, name FROM entrance_history`, (err, rows) => {
    if (err) return console.error('Read error:', err.message);

    const updateStmt = db.prepare(`UPDATE entrance_history SET sheep_id = ? WHERE id = ?`);
    let pending = rows.length;

    if (pending === 0) {
      updateStmt.finalize();
      db.close();
      console.log('Нема записів для оновлення.');
      return;
    }

    rows.forEach((row) => {
      db.get(`SELECT id FROM sheeps WHERE name = ?`, [row.name], (err, sheep) => {
        if (err) {
          console.error('Search error:', err.message);
          if (--pending === 0) {
            updateStmt.finalize();
            db.close();
            console.log('Оновлення завершено (з помилками).');
          }
          return;
        }

        const sheepId = sheep ? sheep.id : 0;

        updateStmt.run(sheepId, row.id, (err) => {
          if (err) {
            console.error(`Помилка оновлення запису ID ${row.id}:`, err.message);
          }

          if (--pending === 0) {
            updateStmt.finalize();
            db.close();
            console.log('Оновлення завершено');
          }
        });
      });
    });
  });
});

