| 14 | | SELECT * |
| 15 | | FROM build |
| 16 | | WHERE id = $buildId |
| 17 | | LIMIT 1; |
| 18 | | |
| 19 | | INSERT INTO build (user_id, name, created_at, description, total_price, is_approved) |
| 20 | | SELECT |
| 21 | | $userId, |
| 22 | | (b.name || ' (copy)'), |
| 23 | | CURRENT_DATE, |
| 24 | | b.description, |
| 25 | | b.total_price, |
| 26 | | false |
| 27 | | FROM build AS b |
| 28 | | WHERE b.id = $buildId |
| 29 | | RETURNING id; |
| 30 | | |
| 31 | | SELECT component_id |
| 32 | | FROM build_component |
| 33 | | WHERE build_id = $buildId; |
| 34 | | |
| 35 | | INSERT INTO build_component (build_id, component_id) |
| 36 | | SELECT |
| 37 | | $newBuildId, |
| 38 | | bc.component_id |
| 39 | | FROM build_component AS bc |
| 40 | | WHERE bc.build_id = $buildId; |
| | 14 | WITH build_to_clone AS ( |
| | 15 | SELECT name, description, total_price |
| | 16 | FROM build |
| | 17 | WHERE id = $buildId |
| | 18 | LIMIT 1 |
| | 19 | ), |
| | 20 | new_build AS ( |
| | 21 | INSERT INTO build (user_id, name, created_at, description, total_price, is_approved) |
| | 22 | SELECT |
| | 23 | $userId, |
| | 24 | build_to_clone.name || ' (copy)', |
| | 25 | CURRENT_DATE, |
| | 26 | build_to_clone.description, |
| | 27 | build_to_clone.total_price, |
| | 28 | false |
| | 29 | FROM build_to_clone |
| | 30 | RETURNING id |
| | 31 | ), |
| | 32 | copied_components AS ( |
| | 33 | INSERT INTO build_component (build_id, component_id) |
| | 34 | SELECT |
| | 35 | new_build.id, |
| | 36 | bc.component_id |
| | 37 | FROM new_build |
| | 38 | JOIN build_component AS bc |
| | 39 | ON bc.build_id = $buildId |
| | 40 | RETURNING 1 |
| | 41 | ) |
| | 42 | SELECT id |
| | 43 | FROM new_build; |