| 1 | module mysql |
| 2 | |
| 3 | // SslMode mirrors the values of the C `enum mysql_ssl_mode`, used with |
| 4 | // `MYSQL_OPT_SSL_MODE`. Use `.unset` to leave the option untouched, in which |
| 5 | // case the underlying libmysqlclient default applies (typically `.preferred`). |
| 6 | pub enum SslMode { |
| 7 | unset = 0 |
| 8 | disabled = 1 |
| 9 | preferred = 2 |
| 10 | required = 3 |
| 11 | verify_ca = 4 |
| 12 | verify_identity = 5 |
| 13 | } |
| 14 | |
| 15 | // FieldType is a list of all supported MYSQL field types. |
| 16 | pub enum FieldType { |
| 17 | type_decimal |
| 18 | type_tiny |
| 19 | type_short |
| 20 | type_long |
| 21 | type_float |
| 22 | type_double |
| 23 | type_null |
| 24 | type_timestamp |
| 25 | type_longlong |
| 26 | type_int24 |
| 27 | type_date |
| 28 | type_time |
| 29 | type_datetime |
| 30 | type_year |
| 31 | type_newdate |
| 32 | type_varchar |
| 33 | type_bit |
| 34 | type_timestamp2 |
| 35 | type_datetime2 |
| 36 | type_time2 |
| 37 | type_json = 245 |
| 38 | type_newdecimal |
| 39 | type_enum |
| 40 | type_set |
| 41 | type_tiny_blob |
| 42 | type_medium_blob |
| 43 | type_long_blob |
| 44 | type_blob |
| 45 | type_var_string |
| 46 | type_string |
| 47 | type_geometry |
| 48 | } |
| 49 | |
| 50 | // str returns a text representation of the field type `f`. |
| 51 | pub fn (f FieldType) str() string { |
| 52 | return match f { |
| 53 | .type_decimal { 'decimal' } |
| 54 | .type_tiny { 'tiny' } |
| 55 | .type_short { 'short' } |
| 56 | .type_long { 'long' } |
| 57 | .type_float { 'float' } |
| 58 | .type_double { 'double' } |
| 59 | .type_null { 'null' } |
| 60 | .type_timestamp { 'timestamp' } |
| 61 | .type_longlong { 'longlong' } |
| 62 | .type_int24 { 'int24' } |
| 63 | .type_date { 'date' } |
| 64 | .type_time { 'time' } |
| 65 | .type_datetime { 'datetime' } |
| 66 | .type_year { 'year' } |
| 67 | .type_newdate { 'newdate' } |
| 68 | .type_varchar { 'varchar' } |
| 69 | .type_bit { 'bit' } |
| 70 | .type_timestamp2 { 'timestamp2' } |
| 71 | .type_datetime2 { 'datetime2' } |
| 72 | .type_time2 { 'time2' } |
| 73 | .type_json { 'json' } |
| 74 | .type_newdecimal { 'newdecimal' } |
| 75 | .type_enum { 'enum' } |
| 76 | .type_set { 'set' } |
| 77 | .type_tiny_blob { 'tiny_blob' } |
| 78 | .type_medium_blob { 'medium_blob' } |
| 79 | .type_long_blob { 'long_blob' } |
| 80 | .type_blob { 'blob' } |
| 81 | .type_var_string { 'var_string' } |
| 82 | .type_string { 'string' } |
| 83 | .type_geometry { 'geometry' } |
| 84 | } |
| 85 | } |
| 86 | |
| 87 | // get_len returns the length in bytes, for the given field type `f`. |
| 88 | // Should be deleted after the `time` type reimplementation. |
| 89 | pub fn (f FieldType) get_len() u32 { |
| 90 | return match f { |
| 91 | .type_blob { 262140 } |
| 92 | else { 0 } |
| 93 | } |
| 94 | } |
| 95 | |