v / vlib / db / mysql / enums.v
94 lines · 90 sloc · 2.08 KB · 733b38cd8d0e36b14e292f6e2bb8ccaa7abd6db5
Raw
1module 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`).
6pub 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.
16pub 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`.
51pub 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.
89pub fn (f FieldType) get_len() u32 {
90 return match f {
91 .type_blob { 262140 }
92 else { 0 }
93 }
94}
95