# Εισαγωγικοί τύποι NEWACTION

> Επιλέξτε τύπους εισόδου, παραμέτρων, ορισμών αναζήτησης και εξόδου, συμπεριλαμβανομένων των μετατροπών και των απορριφθέντων τιμών.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: el
Content-SHA256: dff7f22a53d67637638acc3f3ed3c03df234e81526ac5ee6a296b1945c0c05d6
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Ένας ορισμός είναι μια λίστα `name:Type` χωρισμένων με κόμματα, για παράδειγμα `*email:Email, age:Number`. Ένα `*` πριν από το όνομα κάνει το πεδίο υποχρεωτικό. Η ίδια μορφή χρησιμοποιείται από τα `input` (το σώμα), `params`, `query` και `output`. **Ο τύπος μετατρέπει την τιμή**: η ενέργεια λαμβάνει τη μετατραπείσα τιμή, όχι το κείμενο που στάλθηκε.

Τα ονόματα των τύπων δεν κάνουν διάκριση πεζών και κεφαλαίων. Κάθε τύπος παρακάτω ελέγχθηκε στέλνοντας την τιμή της δεύτερης στήλης.

| Τύπος | Τιμή που στάλθηκε | Τιμή που λήφθηκε | Σημειώσεις |
|---|---|---|---|
| `String` | `  hello  ` | `hello` | Κείμενο· τα κενά στην αρχή και στο τέλος αφαιρούνται. |
| `Text` | `  text  ` | `  text  ` | Κείμενο που διατηρείται ακριβώς όπως στάλθηκε. |
| `Email` | ` A@B.CZ ` | `a@b.cz` | Μια έγκυρη διεύθυνση email, με πεζά· οτιδήποτε άλλο απορρίπτεται. |
| `Phone` | `+421 900 123 456` | `+421900123456` | Ένας αριθμός τηλεφώνου· τα κενά αφαιρούνται. |
| `URL` | `https://totaljs.com/x` | `https://totaljs.com/x` | Ένα έγκυρο URL· οτιδήποτε άλλο απορρίπτεται. |
| `Name` | `john smith` | `John Smith` | Κεφαλαίο το πρώτο γράμμα κάθε λέξης. |
| `Capitalize` | `hello big world` | `Hello Big World` | Κεφαλαίο το πρώτο γράμμα κάθε λέξης. |
| `Capitalize2` | `HELLO big WORLD` | `Hello big world` | Κεφαλαίο μόνο το πρώτο γράμμα και πεζά τα υπόλοιπα. |
| `Lowercase` | `ABC` | `abc` | Πεζά. |
| `Uppercase` | `abc` | `ABC` | Κεφαλαία. |
| `Search` | `Žluťoučký Kůň` | `zlutoucki kun` | Πεζά χωρίς τόνους, για αναζήτηση. |
| `SafeString` | `plain text` | `plain text` | Κείμενο· μια τιμή με ετικέτες HTML όπως `<b>` απορρίπτεται. |
| `Color` | `#FF0000` | `#FF0000` | [schema-enums-and-formats](/en/total5/schema-enums-and-formats/) |
| `Base64` | `SGVsbG8=` | `SGVsbG8=` | [schema-enums-and-formats](/en/total5/schema-enums-and-formats/) |
| `Zip` | `81101` | `81101` | [schema-enums-and-formats](/en/total5/schema-enums-and-formats/) |
| `Icon` | `ti ti-home` | `ti ti-home` | [schema-enums-and-formats](/en/total5/schema-enums-and-formats/) |
| `Number` | `12.5` | `12.5` | Ένας αριθμός· το κείμενο μετατρέπεται. |
| `Float` | `3.14` | `3.14` | Ένας αριθμός· το κείμενο μετατρέπεται. |
| `Decimal` | `2.5` | `2.5` | Ένας αριθμός· το κείμενο μετατρέπεται. |
| `Boolean` | `true` | `true` | `true` ή `false`· το κείμενο `true` μετατρέπεται. |
| `Date` | `2026-01-05` | `2026-01-05T00:00:00.000Z` | Μια ημερομηνία. Στο JSON στέλνεται ως κείμενο ISO. |

Άλλες μορφές:

| Μορφή | Παράδειγμα | Σημειώσεις |
|---|---|---|
| `[String]`, `[Number]` | `ze_arr:[String]` | Ένας πίνακας αυτού του τύπου: κάθε στοιχείο μετατρέπεται. |
| `{ x:Number, y:String }` | `zg_obj:{ x:Number, y:String }` | Ένα εμφωλευμένο αντικείμενο, που επικυρώνεται με τα δικά του πεδία. |
| `String(5)` | `zd_max:String(5)` | Ένα κείμενο το πολύ 5 χαρακτήρων· ένα μακρύτερο κείμενο απορρίπτεται. |

Μια τιμή που δεν ταιριάζει με τον τύπο απορρίπτεται με κατάσταση 400 και το όνομα του πεδίου στο σφάλμα. Αυτές οι τιμές απορρίφθηκαν στους ελέγχους: `SafeString` με `<b>x</b>`, `String(5)` με δέκα χαρακτήρες, ένα `UID` με `abc` και ένα `GUID` με `not-guid`. Η συνταγή ορίων ελέγχει `Int`, `SmallInt`, `TinyInt`, `Number2`: [numeric-schema-boundaries](/en/total5/numeric-schema-boundaries/). Σε αυτή την έκδοση το `Int` δεν περικόπτει: το `7.9` μένει `7.9`.

Τα `UID` και `GUID` δέχονται τις τιμές που δημιουργούν τα `UID()` και `GUID()`.

```js definitions/types.js
NEWACTION('Types/all', {
	name: 'Every type',
	input: 'a_string:String, b_text:Text, c_email:Email, d_phone:Phone, e_url:URL, f_name:Name, g_capitalize:Capitalize, h_capitalize2:Capitalize2, i_lowercase:Lowercase, j_uppercase:Uppercase, k_search:Search, l_safestring:SafeString, m_color:Color, n_base64:Base64, o_zip:Zip, p_icon:Icon, q_number:Number, r_float:Float, s_decimal:Decimal, t_boolean:Boolean, u_date:Date, ze_arr:[String], zf_nums:[Number], zg_obj:{ x:Number, y:String }, zd_max:String(5)',
	action: function($, model) {
		$.callback(model);
	}
});

NEWACTION('Types/ids', {
	name: 'UID and GUID',
	input: '*id:UID, *key:GUID',
	action: function($, model) {
		$.callback(model);
	}
});
```

```js controllers/types.js
exports.install = function() {
	ROUTE('POST /types/ @json --> *Types/all');
	ROUTE('POST /ids/ @json --> *Types/ids');
	ROUTE('GET /newids/', ids);
};

function ids($) {
	$.json({ id: UID(), key: GUID() });
}
```
