<prompt> Unda programu tumizi ya Node.js inayounganishwa kwenye hifadhidata ya PostgreSQL na kutekeleza maswali changamano yanayohusisha majedwali mengi, viungio na mijumuisho ili kutoa ripoti kuhusu shughuli za mtumiaji ndani ya programu.  <response>: Ili kuunda programu tumizi ya Node.js inayounganishwa na hifadhidata ya PostgreSQL na kufanya maswali changamano, utahitaji yafuatayo:1. Hifadhidata ya PostgreSQL iliyo na majedwali yaliyo na data ya shughuli ya mtumiaji.2. Kifurushi cha pg cha kuunganisha kwenye hifadhidata ya PostgreSQL kutoka kwa programu yako ya Node.js.Kwanza, wacha tuandae schema rahisi ya PostgreSQL kwa mfano wetu: sqlTUNZA watumiaji wa TABLE id UFUNGUO WA MSINGI WA SERIAL, jina la mtumiaji VARCHAR255 SIO UTUSI WA KIPEKEE;CREATE TABLE shughuli id UFUNGUO WA MSINGI WA SERIAL, kitambulisho cha mtumiaji INTEGER MAREJELEO watumiajiid, kitendo VARCHAR255 SI UFUPI, muhuri wa muda TIMESTAMP SI BATILI;Sasa, wacha tuunde mradi mpya wa Node.js na tusakinishe utegemezi unaohitajika:bashimkdir nodi-pg-ripoticd nodi-pg-ripotinpm init -ynpm kufunga pg dotenvtouch index.js .envOngeza kamba yako ya muunganisho ya PostgreSQL kwenye faili ya .env:DATABASE_URLpostgres:username:passwordlocalhostdbnameKisha, sasisha faili ya index.js kwa msimbo ufuatao: javascriptconst Mteja needpg;const dotenv needdotenv; Pakia vigezo vya mazingira kutoka kwa faili ya .envdotenv.config;async kazi kuu Unganisha kwenye hifadhidata ya PostgreSQL const client Mteja mpya connectionString: process.env.DATABASE_URL ; subiri mteja.connect; Tekeleza hoja tata inayohusisha majedwali mengi, viungio na mijumuisho const result await client.query CHAGUA jina la mtumiaji, COUNTa.id hesabu ya shughuli ya AS, MINmuhuri wa wakati AS shughuli_ya_kwanza, MAXmuhuri wa wakati AS shughuli_ya_mwisho KUTOKA kwa watumiaji u JIUNGE na shughuli kwenye u.id a.user_id KUNDI LA u.id AGIZA KWA hesabu_ya_shughuli DESC; ; console.logRipoti ya Shughuli ya Mtumiaji:; console.tablematokeo.safu; Funga muunganisho wa hifadhidata subiri mteja.mwisho;kuu.kamataerr console.errorkosa; mchakato.toka1;;Msimbo huu wa mfano huunganishwa na hifadhidata ya PostgreSQL, hufanya hoja tata inayohusisha majedwali mengi, viungio na mijumuisho, na kutoa ripoti kuhusu shughuli za mtumiaji ndani ya programu.Ili kuendesha hati, tekeleza:bashinodi index.jsUnapaswa kuona Ripoti ya Shughuli ya Mtumiaji iliyochapishwa kwenye terminal yako. Hakikisha kuwa una data katika jedwali zako za watumiaji na shughuli ili hii ifanye kazi ipasavyo. 