<prompt> Unda programu tumizi ya Node.js ya TypeScript inayounganishwa kwenye hifadhidata ya MySQL, kupata data kutoka kwa jedwali linaloitwa bidhaa, na kufichua data hii kupitia sehemu ya mwisho ya API ya REST. API inapaswa kutumia utaftaji na uchujaji kulingana na anuwai ya bei ya bidhaa.  <response>: Ili kuunda programu ya TypeScript Node.js inayounganisha kwenye hifadhidata ya MySQL na kufichua data kupitia sehemu ya mwisho ya API ya REST, utahitaji kufuata hatua hizi:1. Sakinisha tegemezi zinazohitajika2. Weka muundo wa mradi3. Sanidi muunganisho wa MySQL4. Unda jedwali la bidhaa katika hifadhidata yako ya MySQL5. Tekeleza API ya REST kwa uhariri na uchujajiHapa kuna mwongozo wa hatua kwa hatua wa jinsi ya kufanya hivi: 1. Sakinisha vitegemezi vinavyohitajikaKwanza, anzisha mradi mpya wa Node.js na usakinishe utegemezi muhimu:bashinpm init -ynpm install express mysql2 body-parser cos dotenv typescript ts-node typesnode typesexpress typesmysql2 typesbody-parser typescorsIfuatayo, unda faili ya tsconfig.json kwa usanidi wa TypeScript:json compilerOptions: target: es6, module: commonjs, outDir: .dist, kali: kweli, esModuleInterop: kweli, skipLibCheck: kweli, forceConsistentCasingInFileNames: kweli , include: src.ts, exclude: node_modules 2. Sanidi muundo wa mradiUnda folda ya src na ongeza faili zifuatazo:- index.ts: Sehemu kuu ya kuingilia ya programu.- database.ts: Hushughulikia muunganisho wa MySQL.- productController.ts: Ina mantiki ya kurejesha bidhaa kutoka kwa hifadhidata. 3. Sanidi muunganisho wa MySQLUnda faili ya .env kwenye mzizi wa mradi wako na ujaze na kitambulisho chako cha MySQL:DB_HOSTmwenyeji wa ndaniDB_USERmziziDB_PASSWORDnenosiri_lakoDB_NAMEdatabase_yanguKatika srcdatabase.ts, sanidi muunganisho wa MySQL ukitumia maktaba ya mysql2: chapaagiza createPool, Pool kutoka mysql2promise;ingiza kama dotenv kutoka dotenv;dotenv.config;Const pool: Dimbwi createPool mwenyeji: process.env.DB_HOST, mtumiaji: process.env.DB_USER, nenosiri: process.env.DB_PASSWORD, hifadhidata: process.env.DB_NAME,;mauzo ya nje chaguo-msingi; 4. Unda jedwali la bidhaa katika hifadhidata yako ya MySQLUnda jedwali jipya linaloitwa bidhaa na safu wima zifuatazo:- id: INT AUTO_INCREMENT FUNGUO YA MSINGI- jina: VARCHAR255- bei: DECIMAL10, 2Unaweza kutumia zana kama phpMyAdmin au kuendesha hoja ya SQL kuunda jedwali hili. 5. Tekeleza REST API kwa uhariri na uchujajiKatika srcproductController.ts, tekeleza mantiki ya kurejesha bidhaa kutoka kwa hifadhidata kwa kuchuja na kuchuja bei: chapaagiza Ombi, Jibu kutoka kueleza;kuagiza bwawa kutoka .database;export const getProducts async req: Ombi, res: Response jaribu const page parseIntreq.query.page kama kamba 1; const limit parseIntreq.query.limit kama kamba 10; const minPrice parseFloatreq.query.minPrice as string 0; const maxPrice parseFloatreq.query.maxPrice kama kamba Nambari.MAX_VALUE; const kukabiliana ukurasa - 1 kikomo; const safu await pool.execute CHAGUA KUTOKA kwa bidhaa WAPI bei ? NA bei ? KIKOMO ?,?, minPrice, maxPrice, offset, limit ; res.status200.jsonsafu; kukamata kosa console.kosakosa; res.status500.tumaHitilafu ya seva; ;Hatimaye, katika srcindex.ts, sanidi seva ya Express na ueleze mwisho wa API: chapakuagiza Express kutoka kueleza;agiza bodyParser kutoka kwa body-parser;kuagiza cors kutoka cors;agiza getProducts kutoka .productController;const app express;app.usebodyParser.json;app.usecors;app.getapiproducts, getProducts;const PORT process.env.PORT 3000;app.listenPORT, console.logSeva inafanya kazi kwenye bandari PORT;;Sasa unaweza kuendesha programu yako ya TypeScript Node.js kwa kutumia amri ifuatayo:bashinpx ts-nodi srcindex.tsAPI yako ya REST itapatikana katika ikiwa na usaidizi wa utaftaji kwa kutumia vigezo vya hoja vya ukurasa na kikomo na uchujaji wa masafa ya bei kwa kutumia minPrice na maxPrice swala. vigezo. 