use getset::{CopyGetters, Getters};
use serde::{Deserialize, Serialize};
#[derive(
Getters, CopyGetters, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, sqlx::FromRow,
)]
pub struct BasiliqDbScannerSchemaRaw {
#[getset(get_copy = "pub")]
id: u32,
#[getset(get, get = "pub")]
name: String,
#[getset(get_copy = "pub")]
owner: u32,
#[getset(get_copy = "pub")]
usage: bool,
}
#[derive(
Getters, CopyGetters, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow,
)]
pub struct BasiliqDbScannerRoleRaw {
#[getset(get_copy = "pub")]
id: u32,
#[getset(get = "pub")]
name: String,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, sqlx::Type)]
#[repr(i8)]
pub enum BasiliqDbScannerTableType {
CompositeType = 99, ForeignTable = 102, Index = 105, Ordinary = 114, Sequence = 115, Toast = 116, View = 118, }
#[derive(
Getters, CopyGetters, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, sqlx::FromRow,
)]
pub struct BasiliqDbScannerTableRaw {
#[getset(get_copy = "pub")]
id: u32,
#[getset(get = "pub")]
name: String,
#[getset(get_copy = "pub")]
schema: u32,
#[getset(get_copy = "pub")]
type_: u32,
#[getset(get_copy = "pub")]
owner: u32,
#[getset(get = "pub")]
kind: BasiliqDbScannerTableType,
#[getset(get_copy = "pub")]
usage_perm: bool,
#[getset(get_copy = "pub")]
select_perm: bool,
#[getset(get_copy = "pub")]
insert_perm: bool,
#[getset(get_copy = "pub")]
update_perm: bool,
#[getset(get_copy = "pub")]
delete_perm: bool,
}
#[derive(
Getters, CopyGetters, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow,
)]
pub struct BasiliqDbScannerColumnRaw {
#[getset(get = "pub")]
name: String,
#[getset(get_copy = "pub")]
table: u32,
#[getset(get_copy = "pub")]
column_number: i16,
#[getset(get_copy = "pub")]
type_: u32,
#[getset(get_copy = "pub")]
dimensions: i32,
#[getset(get_copy = "pub")]
non_null: bool,
#[getset(get_copy = "pub")]
has_default: bool,
#[getset(get_copy = "pub")]
insert_perm: bool,
#[getset(get_copy = "pub")]
select_perm: bool,
#[getset(get_copy = "pub")]
update_perm: bool,
#[getset(get_copy = "pub")]
reference_perm: bool,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, sqlx::Type)]
#[repr(i8)]
pub enum BasiliqDbScannerTypeType {
Base = 98, Composite = 99, Domain = 100, Enum = 101, Pseudo = 112, Range = 114, }
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, sqlx::Type)]
#[repr(i8)]
pub enum BasiliqDbScannerTypeCategory {
Array = 65, Boolean = 66, Composite = 67, DateTime = 68, Enum = 69, Geo = 71, NetworkAddress = 73, Numeric = 78, Pseudo = 80, Range = 82, String = 83, Timespan = 84, UserDefined = 85, BitString = 86, Unknown = 88, }
#[derive(
Getters, CopyGetters, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow,
)]
pub struct BasiliqDbScannerTypeRaw {
#[getset(get_copy = "pub")]
id: u32,
#[getset(get = "pub")]
name: String,
#[getset(get_copy = "pub")]
schema: u32,
#[getset(get_copy = "pub")]
len: Option<i16>,
#[getset(get = "pub")]
type_: BasiliqDbScannerTypeType,
#[getset(get_copy = "pub")]
rel_id: Option<u32>,
#[getset(get_copy = "pub")]
child_type: Option<u32>,
#[getset(get_copy = "pub")]
parent_type: Option<u32>,
#[getset(get = "pub")]
category: BasiliqDbScannerTypeCategory,
#[getset(get_copy = "pub")]
dimensions: i32,
}
#[derive(
Getters, CopyGetters, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, sqlx::FromRow,
)]
pub struct BasiliqDbScannerPrimaryKeyRaw {
#[getset(get_copy = "pub")]
id: u32,
#[getset(get = "pub")]
name: String,
#[getset(get_copy = "pub")]
schema: u32,
#[getset(get_copy = "pub")]
table: u32,
#[getset(get_copy = "pub")]
index: u32,
#[getset(get = "pub")]
columns: Vec<i16>,
}
#[derive(
Getters, CopyGetters, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, sqlx::FromRow,
)]
pub struct BasiliqDbScannerForeignKeyRaw {
#[getset(get_copy = "pub")]
id: u32,
#[getset(get = "pub")]
name: String,
#[getset(get = "pub")]
schema: String,
#[getset(get = "pub")]
table: String,
#[getset(get_copy = "pub")]
table_id: u32,
#[getset(get = "pub")]
fschema: String,
#[getset(get = "pub")]
ftable: String,
#[getset(get_copy = "pub")]
ftable_id: u32,
#[getset(get = "pub")]
lcolumns: Option<Vec<i16>>,
#[getset(get = "pub")]
fcolumns: Option<Vec<i16>>,
}
pub async fn read_schemas<'a, E>(db_conn: E) -> Result<Vec<BasiliqDbScannerSchemaRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_schemas.sql")) .fetch_all(db_conn)
.await?,
)
}
pub async fn read_tables<'a, E>(db_conn: E) -> Result<Vec<BasiliqDbScannerTableRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_tables.sql"))
.fetch_all(db_conn)
.await?,
)
}
#[allow(dead_code)]
pub async fn read_roles<'a, E>(db_conn: E) -> Result<Vec<BasiliqDbScannerRoleRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_roles.sql"))
.fetch_all(db_conn)
.await?,
)
}
pub async fn read_columns<'a, E>(db_conn: E) -> Result<Vec<BasiliqDbScannerColumnRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_columns.sql"))
.fetch_all(db_conn)
.await?,
)
}
pub async fn read_types<'a, E>(db_conn: E) -> Result<Vec<BasiliqDbScannerTypeRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_types.sql"))
.fetch_all(db_conn)
.await?,
)
}
pub async fn read_primary_keys<'a, E>(
db_conn: E,
) -> Result<Vec<BasiliqDbScannerPrimaryKeyRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_primary_keys.sql"))
.fetch_all(db_conn)
.await?,
)
}
pub async fn read_foreign_keys<'a, E>(
db_conn: E,
) -> Result<Vec<BasiliqDbScannerForeignKeyRaw>, sqlx::Error>
where
E: sqlx::Executor<'a, Database = sqlx::Postgres>,
{
Ok(
sqlx::query_as(include_str!("../discovery_queries/get_foreign_keys.sql"))
.fetch_all(db_conn)
.await?,
)
}