pub enum PostgreSQLType {
Show 19 variants
Integer,
Bigint,
Smallint,
Serial,
Smallserial,
Bigserial,
Text,
Varchar,
Char,
Real,
DoublePrecision,
Numeric,
Boolean,
Bytea,
Timestamp,
Timestamptz,
Date,
Time,
Timetz,
}Expand description
A PostgreSQL column type as written in DDL.
Some variants need a feature: Uuid (uuid), Json/Jsonb/Enum
(serde), Interval (chrono), network types (cidr), geometric types
(geo-types) and bit strings (bit-vec).
See https://www.postgresql.org/docs/current/datatype.html.
§Examples
use drizzle_types::postgres::PostgreSQLType;
let int_type = PostgreSQLType::Integer;
assert_eq!(int_type.to_sql_type(), "INTEGER");
let serial = PostgreSQLType::Serial;
assert!(serial.is_serial());Variants§
Integer
PostgreSQL INTEGER type - 32-bit signed integer
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-INT
Bigint
PostgreSQL BIGINT type - 64-bit signed integer
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-INT
Smallint
PostgreSQL SMALLINT type - 16-bit signed integer
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-INT
Serial
PostgreSQL SERIAL type - auto-incrementing 32-bit integer
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL
Smallserial
PostgreSQL SMALLSERIAL type - auto-incrementing 16-bit integer
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL
Bigserial
PostgreSQL BIGSERIAL type - auto-incrementing 64-bit integer
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL
Text
PostgreSQL TEXT type - variable-length character string
See: https://www.postgresql.org/docs/current/datatype-character.html
Varchar
PostgreSQL VARCHAR type - variable-length character string with limit
See: https://www.postgresql.org/docs/current/datatype-character.html
Char
PostgreSQL CHAR type - fixed-length character string
See: https://www.postgresql.org/docs/current/datatype-character.html
Real
PostgreSQL REAL type - single precision floating-point number
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-FLOAT
DoublePrecision
PostgreSQL DOUBLE PRECISION type - double precision floating-point number
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-FLOAT
Numeric
PostgreSQL NUMERIC type - exact numeric with selectable precision
See: https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL
Boolean
PostgreSQL BOOLEAN type - true/false
See: https://www.postgresql.org/docs/current/datatype-boolean.html
Bytea
PostgreSQL BYTEA type - binary data
See: https://www.postgresql.org/docs/current/datatype-binary.html
Timestamp
PostgreSQL TIMESTAMP type - date and time
See: https://www.postgresql.org/docs/current/datatype-datetime.html
Timestamptz
PostgreSQL TIMESTAMPTZ type - date and time with time zone
See: https://www.postgresql.org/docs/current/datatype-datetime.html
Date
PostgreSQL DATE type - calendar date
See: https://www.postgresql.org/docs/current/datatype-datetime.html
Time
PostgreSQL TIME type - time of day
See: https://www.postgresql.org/docs/current/datatype-datetime.html
Timetz
PostgreSQL TIMETZ type - time of day with time zone
See: https://www.postgresql.org/docs/current/datatype-datetime.html
Implementations§
Source§impl PostgreSQLType
impl PostgreSQLType
Sourcepub fn from_attribute_name(name: &str) -> Option<Self>
pub fn from_attribute_name(name: &str) -> Option<Self>
Parses a lowercase type name from a column attribute, such as "int4"
or "double_precision". Returns None for unknown names.
Multi-word names use underscores ("timestamp_with_time_zone").
For native enums, use [Self::from_enum_attribute] instead.
§Examples
use drizzle_types::postgres::PostgreSQLType;
assert_eq!(PostgreSQLType::from_attribute_name("int8"), Some(PostgreSQLType::Bigint));
assert_eq!(PostgreSQLType::from_attribute_name("nope"), None);Sourcepub const fn to_sql_type(&self) -> &str
pub const fn to_sql_type(&self) -> &str
Returns the type as written in DDL, such as "DOUBLE PRECISION".
For a native enum this is the enum’s type name.
Sourcepub const fn is_serial(&self) -> bool
pub const fn is_serial(&self) -> bool
Returns true for the auto-incrementing types: SMALLSERIAL, SERIAL, BIGSERIAL.
Sourcepub const fn supports_primary_key(&self) -> bool
pub const fn supports_primary_key(&self) -> bool
Returns true if the type can be a primary key; JSON and JSONB cannot.
Sourcepub fn is_valid_flag(&self, flag: &str) -> bool
pub fn is_valid_flag(&self, flag: &str) -> bool
Returns true if the column attribute flag (such as "identity",
"json" or "enum") can be used with this type.
primary, primary_key, unique, not_null and check are valid
for every type.