Started rasql-model

This commit is contained in:
ZacJW 2025-06-16 07:54:00 +01:00
parent 177490cf4d
commit 9eb02a767b
4 changed files with 99 additions and 0 deletions

7
Cargo.lock generated
View file

@ -493,6 +493,13 @@ dependencies = [
"tokio-postgres",
]
[[package]]
name = "rasql-model"
version = "0.1.0"
dependencies = [
"sqlparser",
]
[[package]]
name = "rasql-query"
version = "0.0.0"

View file

@ -4,6 +4,7 @@ resolver = "2"
members = [
"rasql-build",
"rasql-core",
"rasql-model",
"rasql-query",
"rasql-traits",
]

7
rasql-model/Cargo.toml Normal file
View file

@ -0,0 +1,7 @@
[package]
name = "rasql-model"
version = "0.1.0"
edition = "2024"
[dependencies]
sqlparser = "0.54.0"

84
rasql-model/src/lib.rs Normal file
View file

@ -0,0 +1,84 @@
use std::{any::TypeId, borrow::Cow, num::NonZeroU32};
#[derive(Debug, Clone)]
pub enum PostgresDatatype {
Bigint,
Bigserial,
Bit(Option<NonZeroU32>),
BitVarying(Option<NonZeroU32>),
Boolean,
Box,
Bytea,
Character(Option<NonZeroU32>),
CharacterVarying(Option<NonZeroU32>),
Cidr,
Circle,
Date,
DoublePrecision,
Inet,
Integer,
Interval(Option<IntervalFields>,Option<u8>),
Json,
Jsonb,
Line,
Lseg,
Macaddr,
Macaddr8,
Money,
Numeric(Option<NumericConfig>),
Path,
PgLsn,
PgSnapshot,
Point,
Polygon,
Real,
SmallInt,
SmallSerial,
Serial,
Text,
Time(Option<u8>),
TimeTz(Option<u8>),
Timestamp(Option<u8>),
TimestampTz(Option<u8>),
TsQuery,
TsVector,
TxidSnapshot,
Uuid,
Xml,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum IntervalFields {
Year,
Month,
Day,
Hour,
Minute,
Second,
YearToMonth,
DayToHour,
DayToMinute,
DayToSecond,
HourToMinute,
HourToSecond,
MinuteToSecond,
}
#[derive(Debug, Clone, Copy)]
pub enum NumericConfig {
Precision(u16),
PrecisionAndScale(u16, i16),
}
#[derive(Debug, Clone)]
pub struct Table {
pub columns: Cow<'static, [Column]>,
}
#[derive(Debug, Clone)]
pub struct Column {
pub postgres_name: Cow<'static, str>,
pub postgres_datatype: PostgresDatatype,
pub field_name: Cow<'static, str>,
pub rust_type_id: fn() -> TypeId,
}