11package ru .javawebinar .basejava .storage ;
22
33import ru .javawebinar .basejava .exception .NotExistStorageException ;
4+ import ru .javawebinar .basejava .model .ContactType ;
45import ru .javawebinar .basejava .model .Resume ;
56import ru .javawebinar .basejava .sql .SqlHelper ;
67
78import java .sql .DriverManager ;
89import java .sql .ResultSet ;
910import java .util .ArrayList ;
1011import java .util .List ;
12+ import java .util .Map ;
1113
1214public class SqlStorage implements Storage {
1315 public final SqlHelper sqlHelper ;
@@ -23,14 +25,26 @@ public void clear() {
2325
2426 @ Override
2527 public Resume get (String uuid ) {
26- return sqlHelper .execute ("SELECT * FROM resume r WHERE r.uuid =?" , ps -> {
27- ps .setString (1 , uuid );
28- ResultSet rs = ps .executeQuery ();
29- if (!rs .next ()) {
30- throw new NotExistStorageException (uuid );
31- }
32- return new Resume (uuid , rs .getString ("full_name" ));
33- });
28+ return sqlHelper .execute ("" +
29+ " SELECT * FROM resume r " +
30+ " LEFT JOIN contact c " +
31+ " ON r.uuid = c.resume_uuid " +
32+ " WHERE r.uuid =? " ,
33+ ps -> {
34+ ps .setString (1 , uuid );
35+ ResultSet rs = ps .executeQuery ();
36+ if (!rs .next ()) {
37+ throw new NotExistStorageException (uuid );
38+ }
39+ Resume r = new Resume (uuid , rs .getString ("full_name" ));
40+ do {
41+ String value = rs .getString ("value" );
42+ ContactType type = ContactType .valueOf (rs .getString ("type" ));
43+ r .addContact (type , value );
44+ } while (rs .next ());
45+
46+ return r ;
47+ });
3448 }
3549
3650 @ Override
@@ -53,6 +67,14 @@ public void save(Resume r) {
5367 ps .execute ();
5468 return null ;
5569 });
70+ for (Map .Entry <ContactType , String > e : r .getContacts ().entrySet ()) {
71+ sqlHelper .<Void >execute ("INSERT INTO contact (resume_uuid, type, value) VALUES (?,?,?)" , ps -> {
72+ ps .setString (1 , r .getUuid ());
73+ ps .setString (2 , e .getKey ().name ());
74+ ps .setString (3 , e .getValue ());
75+ return null ;
76+ });
77+ }
5678 }
5779
5880 @ Override
0 commit comments