| @@ -129,7 +129,7 @@ void database::record_dep(path_ref input, path_ref output, fs::file_time_type in | |||
| auto in_id = _record_file(input); | |||
| auto out_id = _record_file(output); | |||
| auto& st = _stmt_cache(R"( | |||
| INSERT OR IGNORE INTO dds_deps (input_file_id, output_file_id, input_mtime) | |||
| INSERT OR REPLACE INTO dds_deps (input_file_id, output_file_id, input_mtime) | |||
| VALUES (?, ?, ?) | |||
| )"_sql); | |||
| sqlite3::exec(st, std::forward_as_tuple(in_id, out_id, input_mtime.time_since_epoch().count())); | |||
| @@ -159,7 +159,7 @@ void database::forget_inputs_of(path_ref file) { | |||
| DELETE FROM dds_deps | |||
| WHERE output_file_id IN id_to_delete | |||
| )"_sql); | |||
| sqlite3::exec(st, std::forward_as_tuple(fs::weakly_canonical(file).string())); | |||
| sqlite3::exec(st, std::forward_as_tuple(fs::weakly_canonical(file).generic_string())); | |||
| } | |||
| std::optional<std::vector<input_file_info>> database::inputs_of(path_ref file_) const { | |||
| @@ -176,7 +176,7 @@ std::optional<std::vector<input_file_info>> database::inputs_of(path_ref file_) | |||
| WHERE output_file_id IN file | |||
| )"_sql); | |||
| st.reset(); | |||
| st.bindings[1] = file.string(); | |||
| st.bindings[1] = file.generic_string(); | |||
| auto tup_iter = sqlite3::iter_tuples<std::string, std::int64_t>(st); | |||
| std::vector<input_file_info> ret; | |||
| @@ -204,7 +204,7 @@ std::optional<command_info> database::command_of(path_ref file_) const { | |||
| WHERE file_id IN file | |||
| )"_sql); | |||
| st.reset(); | |||
| st.bindings[1] = file.string(); | |||
| st.bindings[1] = file.generic_string(); | |||
| auto opt_res = sqlite3::unpack_single_opt<std::string, std::string>(st); | |||
| if (!opt_res) { | |||
| return std::nullopt; | |||