| | 106 | = Consistency |
| | 107 | Сега ке видиме пример каде ја штитиме базата од внесување невалидни или несоодветни податоци \\ |
| | 108 | поради поставените '''constraints''' односно ограничувања.\\ |
| | 109 | '''Пример 1 : Error'''\\ |
| | 110 | '''FOREIGN KEY врски''' (на пример, '''{{{id_customer}}}''' во '''{{{orders}}}''' мора да постои во '''{{{customers}}}'''),\\ |
| | 111 | а од друга страна имаме поставено и неколку '''NOT NULL''' полиња. \\ |
| | 112 | Во '''/order''' API, пред да се внесе нарачка, се проверува дали има доволно залиха : |
| | 113 | {{{#!sql |
| | 114 | if (currentStock < item.quantity) { |
| | 115 | throw new Error(`Недоволна залиха за продукт ${item.product_name} (${item.size})`); |
| | 116 | } |
| | 117 | }}} |
| | 118 | На овој начин се спречува несоодветно внесување на залиха во база, што би ја нарушило логиката и правилата во базата.\\ |
| | 119 | Ако нешто не е во ред, трансакцијата не се потврдува и базата останува во валидна состојба.\\ |
| | 120 | '''Пример 2 : status(400) '''\\ |
| | 121 | Во API за промена на улога '''PUT /admin/users/:id/role''' проверуваm дали улогата постои во '''roles''' пред да се измени :\\ |
| | 122 | {{{#!sql |
| | 123 | const roleRes = await db.pool.query("SELECT id_role FROM roles WHERE role_name = $1", [role_name]); |
| | 124 | if (roleRes.rows.length === 0) { |
| | 125 | return res.status(400).json({ error: "Улогата не постои" }); |
| | 126 | } |
| | 127 | }}} |
| | 128 | ова е уште еден пример каде се штити базата од внесување невалидни или несоодветни податоци. |