<prompt> Andika seva ya wavuti ya Golang kwa kutumia mfumo wa Echo ambao una miisho ya kuunda, kusoma, kusasisha, na kufuta madokezo yaliyohifadhiwa katika hifadhidata ya SQLite. Kila noti inapaswa kuwa na kichwa, maudhui na muhuri wa wakati.  <response>: Kwanza, unahitaji kufunga vifurushi vinavyohitajika. Endesha amri zifuatazo kwenye terminal yako:bashinenda upate -u github.comlabstackechov4nenda upate -u github.commattngo-sqlite3Sasa unda faili inayoitwa main.go na uongeze nambari ifuatayo:nendakifurushi kikuukuagiza databasesqlfmtnethttpwakatigithub.comlabstackechov4_ github.commattngo-sqlite3aina ya muundo wa noti Kitambulisho int json:idMfuatano wa kichwa json:kichwaMfuatano wa maudhui json:maudhuiMuda wa muhuri wa saa.Saa json:muhuri wa saafunc initDBkamba ya njia ya faili sql.DB db, err : sql.Opensqlite3, njia ya failiikiwa makosa ! nil hofu makosaikiwa db nil hofu db ni nilkurudi dbfunc migratedb sql.DB sql : TUNZA JEDWALI IKIWA HAIPO noti id INTEGER NOT NULL PRIMARY Key OUTOINCREMENT,MAANDIKO ya kichwa SI UFUPI,MAANDIKO YALIYOMO SIYO BATILI,muhuri wa muda DATETIME DEFAULT CURRENT_TIMESTAMP;_, kosa : db.Execsqlikiwa makosa ! nil hofu makosafunc main e : echo.Newdb : initDBnotes.dbhamia dbe.POSTnotes, funcc echo.Context hitilafu kumbuka: mpya Kumbukaikikosea : c.Bindnote; makosa ! nil kurudi makosastmt, err : db. TayarishaINGIZA MADOKEZOkichwa, maudhui thamani?, ?ikiwa makosa ! nil kurudi makosares, err : stmt.Execnote.Title, note.Contentikiwa makosa ! nil kurudi makosaid, makosa : res.LastInsertIdikiwa makosa ! nil kurudi makosanote.ID intidrudisha c.JSONhttp.StatusCreated, notee.GETnotes:id, funcc echo.Context hitilafu id : c.Paramidsafu mlalo : db.QueryRowCHAGUA kitambulisho, kichwa, maudhui, muhuri wa muda KUTOKA madokezo WHERE id?, kitambulishokumbuka: mpya Kumbukaerr : row.Scannote.ID, note.Title, note.Content, note.Timestampikiwa kosa sql.ErrNoRows rudisha mwangwi.Hitilafu Mpya yaHTTPhttp.StatusNotFound, Dokezo halijapatikana. vinginevyo ikiwa makosa ! nil kurudi makosarudisha c.JSONhttp.StatusOK, kumbukae.PUTnotes:id, funcc echo.Context hitilafu id : c.Paramidkumbuka: mpya Kumbukaikikosea : c.Bindnote; makosa ! nil kurudi makosastmt, err : db. TayarishaSASISHA madokezo SET title?, content? WHERE id?ikiwa makosa ! nil kurudi makosares, err : stmt.Execnote.Title, note.Content, idikiwa makosa ! nil kurudi makosarowsAffected, err : res.RowsAffectedikiwa makosa ! nil kurudi makosaikiwa safu zimeathirika 0 rudisha mwangwi.Hitilafu Mpya yaHTTPhttp.StatusNotFound, Dokezo halijapatikana.rudisha c.NoContenthttp.StatusOKe.DELETEnotes:id, funcc echo.Context hitilafu id : c.Paramidstmt, err : db. TayarishaFUTA KUTOKA kwa vidokezo WAPI id?ikiwa makosa ! nil kurudi makosares, makosa : stmt.Execidikiwa makosa ! nil kurudi makosarowsAffected, err : res.RowsAffectedikiwa makosa ! nil kurudi makosaikiwa safu zimeathirika 0 rudisha mwangwi.Hitilafu Mpya yaHTTPhttp.StatusNotFound, Dokezo halijapatikana.rudisha c.NoContenthttp.StatusOKe.Logger.Fatale.Start:8080Nambari hii inaunda seva rahisi ya wavuti kwa kutumia mfumo wa Echo na hifadhidata ya SQLite. Seva ina sehemu za mwisho za kuunda, kusoma, kusasisha na kufuta madokezo yenye kichwa, maudhui na muhuri wa muda.Ili kuendesha seva, tekeleza go run main.go kwenye terminal yako. Kisha unaweza kutumia mteja wa API kama Postman au curl kujaribu miisho tofauti:- POST madokezo: Unda kidokezo kipya- PATA notes:id: Pata dokezo kwa kitambulisho- PUT notes:id: Sasisha dokezo kwa kitambulisho- FUTA notes:id: Futa dokezo kwa kitambulisho 