<prompt> Andika programu ya Golang inayofuatilia saraka kwa mabadiliko kuunda faili, kurekebisha, kufuta na kuweka matukio haya kwenye hifadhidata ya PostgreSQL pamoja na mihuri ya muda na metadata ya faili.PLINFORMAT  <response>: kifurushi kikuukuagiza databasesqlfmtlogioswakatigithub.comfsnotifyfsnotify_ github.comlibpqconst DB_USER mtumiaji_wakoDB_PASSWORD nenosiri_la_ lakoDB_NAME your_db_namefunc main Unganisha kwenye hifadhidatadbinfo : fmt.Sprintfmtumiajis passwords dbnames sslmodelemaza,DB_USER, DB_PASSWORD, DB_NAMEdb, err : sql.Openpostgres, dbinfoangaliaKukosakosaahirisha db.Funga Unda jedwali ikiwa haipocreateTableQuery : TUNZA JEDWALI IKIWA HAIPO matukio_ya faili id UFUNGUO WA MSINGI WA SERIAL,event_type TEXT NOT NULL,file_name TEXT NOT NULL,muhuri wa muda TIMESTAMP SI BATILI_, makosa db.ExeccreateTableQueryangaliaKukosakosa Anzisha mtazamaji wa fsnotifymwangalizi, kosa : fsnotify.NewWatcherangaliaKukosakosaahirisha mwangalizi. Fungaimefanywa : make chan boolkwenda func kwa chagua tukio la kesi : -watcher.Matukio:log.Printlntukio:, tukioikiwa tukio.Opfsnotify.Write fsnotify. Andika log.Printlnfaili iliyorekebishwa:, tukio.JinainsertEventdb, MODIFY, event.Name lingine ikiwa tukio.Opfsnotify.Create fsnotify.Create log.Printlnfaili iliyoundwa:, tukio.NameinsertEventdb, CREATE, event.Name lingine ikiwa tukio.Opfsnotify.Remove fsnotify.Ondoa log.Printlnfaili iliyofutwa:, event.NameinsertEventdb, DELETE, event.Namekesi kosa : -watcher.Errors:log.Printlnkosa:, kosadirToWatch : .ikiwa lenos.Args 1 dirToWatch os.Args1makosa mwangalizi.OngezadirToWatchangaliaKukosakosa-imefanywafunc insertEventdb sql.DB, eventType string, fileName kamba stmt, err : db. TayarishaINGIZA matukio_ya_failiaina_ya_tukio, jina_la_faili, muhuri wa saa VALUES1, 2, 3angaliaKukosakosa_, err stmt.ExeceventType, fileName, time.NowangaliaKukosakosafunc checkErrkosa kosa ikiwa makosa ! nil log.Fatalhitilafu 