Completely unused channels get wiped entirely (we've already closed it above) */
| 3187 | |
| 3188 | /* Completely unused channels get wiped entirely (we've already closed it above) */ |
| 3189 | void wallet_channel_delete(struct wallet *w, const struct channel *channel) |
| 3190 | { |
| 3191 | struct db_stmt *stmt; |
| 3192 | |
| 3193 | /* Delete channel configuration for both sides */ |
| 3194 | stmt = db_prepare_v2(w->db, SQL("DELETE FROM channel_configs" |
| 3195 | " WHERE id=? OR id=?")); |
| 3196 | db_bind_u64(stmt, channel->channel_info.their_config.id); |
| 3197 | db_bind_u64(stmt, channel->our_config.id); |
| 3198 | db_exec_prepared_v2(stmt); |
| 3199 | |
| 3200 | assert(db_count_changes(stmt) == 2); |
| 3201 | tal_free(stmt); |
| 3202 | |
| 3203 | /* Delete shachains */ |
| 3204 | stmt = db_prepare_v2(w->db, SQL("DELETE FROM shachains " |
| 3205 | "WHERE id IN (" |
| 3206 | " SELECT shachain_remote_id " |
| 3207 | " FROM channels " |
| 3208 | " WHERE channels.id=?" |
| 3209 | ")")); |
| 3210 | db_bind_u64(stmt, channel->dbid); |
| 3211 | db_exec_prepared_v2(stmt); |
| 3212 | |
| 3213 | assert(db_count_changes(stmt) == 1); |
| 3214 | tal_free(stmt); |
| 3215 | |
| 3216 | stmt = db_prepare_v2(w->db, SQL("DELETE FROM channels" |
| 3217 | " WHERE state = ?" |
| 3218 | " AND id=?")); |
| 3219 | db_bind_u64(stmt, channel_state_in_db(CLOSED)); |
| 3220 | db_bind_u64(stmt, channel->dbid); |
| 3221 | db_exec_prepared_v2(stmt); |
| 3222 | |
| 3223 | assert(db_count_changes(stmt) == 1); |
| 3224 | tal_free(stmt); |
| 3225 | } |
| 3226 | |
| 3227 | void wallet_channel_inflight_cleanup_incomplete(struct wallet *w, u64 wallet_id) |
| 3228 | { |
no test coverage detected