<prompt> Tengeneza programu ya Node.js ambayo hutumika kama API RESTful ya kudhibiti mfumo rahisi wa usimamizi wa kazi. API inapaswa kuauni ncha za kuunda, kusasisha, kufuta na kuorodhesha kazi. Kila kazi inapaswa kuwa na kichwa, maelezo, tarehe ya kukamilisha na hali imekamilika au haijakamilika. Hifadhi kazi katika hifadhidata ya MariaDB.  <response>: Ili kuunda RESTful API ya kudhibiti mfumo rahisi wa usimamizi wa kazi, fuata hatua hizi:1. Sakinisha vifurushi vinavyohitajikaKwanza, unahitaji kusakinisha vifurushi vinavyohitajika kwa programu yako ya Node.js. Utatumia Express kama mfumo wa wavuti na MariaDB kama hifadhidata.bashinpm init -ynpm install express mariadb body-parser dotenv2. Weka vigezo vya mazingiraUnda faili ya .env katika saraka ya mizizi ya mradi wako na maudhui yafuatayo:DB_HOSTmwenyeji wa ndaniDB_USERmziziDB_PASSWORDnenosiri_lakoDB_NAMEtasks_db3. Unda faili ya database.sqlUnda faili mpya inayoitwa database.sql katika saraka ya mizizi ya mradi wako na hati ifuatayo ya SQL ili kuunda jedwali la majukumu: sqlTUNZA HABARI IKIWA HAIPO tasks_db;TUMIA kazi_db;TUNZA JEDWALI IKIWA HAIPO kazi id INT AUTO_INCREMENT FUNGUO YA MSINGI, kichwa VARCHAR255 SI UFUPI, maelezo TEXT, tarehe_ya_kukamilika DATE, hali ENUMimekamilika, haijakamilika DEFAULT haijakamilika;4. Tekeleza API ya RESTfulUnda faili mpya inayoitwa app.js katika saraka ya mizizi ya mradi wako na msimbo ufuatao: javascriptconst express needexpress;const bodyParser needbody-parser;const mariadb hitajimariadb;const dotenv needdotenv; Pakia vigezo vya mazingira kutoka kwa faili ya .envdotenv.config; Anzisha programuconst app express;app.usebodyParser.json; Unganisha kwa MariaDBconst pool mariadb.createPool mwenyeji: process.env.DB_HOST, mtumiaji: process.env.DB_USER, nenosiri: process.env.DB_PASSWORD, hifadhidata: process.env.DB_NAME,; Kitendaji cha Msaidizi kutekeleza maswaliswala la utendaji wa async sql, params let conn; jaribu conn await pool.getConnection; const rows kusubiri conn.querysql, params; safu za kurudi; kukamata kukosea kutupa kosa; hatimaye ikiwa conn conn.release; Orodhesha kaziapp.gettasks, async req, res jaribu const tasks subiri hojaCHAGUA KUTOKA kwa kazi; res.jsonkazi; kukamata kukosea res.status500.tumaerr.message; ; Unda kaziapp.posttasks, async req, res const title, maelezo, tarehe_ya_kutarajiwa, hali req.body; jaribu const result subiri swala INGIZA KATIKA kazi kichwa, maelezo, tarehe_ya_kutarajiwa, hali THAMANI ?, ?, ?, ?, kichwa, maelezo, tarehe_ya_kutarajiwa, hali ; res.json id: result.insertId ; kukamata kukosea res.status500.tumaerr.message; ; Sasisha kaziapp.puttasks:id, async req, res const id req.params; const title, maelezo, tarehe_ya_kutarajiwa, hali req.body; jaribu subiri swali SASISHA kazi SET title?, maelezo?, tarehe_yakutarajiwa?, hali? WAPI id?, kichwa, maelezo, tarehe_ya_kutarajiwa, hali, kitambulisho ; res.sendStatus200; kukamata kukosea res.status500.tumaerr.message; ; Futa kaziapp.deletetasks:id, async req, res const id req.params; jaribu wait queryFUTA KUTOKA KWA kazi WAPI id?, id; res.sendStatus200; kukamata kukosea res.status500.tumaerr.message; ; Anzisha sevaconst port process.env.PORT 3000;app.listenbandari, console.logSeva inayoendesha kwenye Endesha programuKwanza, unda hifadhidata na jedwali kwa kutekeleza hati ya database.sql:bashimysql -u mzizi -p database.sqlKisha, anza programu yako ya Node.js:bashinodi app.jsSasa una API RESTful ya kudhibiti kazi iliyo na ncha za kuunda, kusasisha, kufuta na kuorodhesha majukumu. Kazi zimehifadhiwa katika hifadhidata ya MariaDB. 