sea_orm/rbac/engine/
resource_request.rs1use crate::rbac::entity::resource::Model as Resource;
2
3#[derive(Debug)]
4pub struct Table<'a>(pub &'a str);
5
6#[derive(Debug)]
7pub struct SchemaTable<'a, 'b>(pub &'a str, pub &'b str);
8
9#[derive(Debug, Clone, PartialEq, Eq, Hash)]
10pub struct ResourceRequest {
11 pub schema: Option<String>,
12 pub table: String,
13}
14
15impl<'a> From<Table<'a>> for ResourceRequest {
16 fn from(table: Table<'a>) -> ResourceRequest {
17 ResourceRequest {
18 schema: None,
19 table: table.0.to_owned(),
20 }
21 }
22}
23
24impl<'a, 'b> From<SchemaTable<'a, 'b>> for ResourceRequest {
25 fn from(schema_table: SchemaTable<'a, 'b>) -> ResourceRequest {
26 ResourceRequest {
27 schema: Some(schema_table.0.to_owned()),
28 table: schema_table.1.to_owned(),
29 }
30 }
31}
32
33impl From<Resource> for ResourceRequest {
34 fn from(resource: Resource) -> Self {
35 Self {
36 schema: resource.schema,
37 table: resource.table,
38 }
39 }
40}
41
42impl std::fmt::Display for ResourceRequest {
43 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
44 write!(
45 f,
46 "{}{}{}",
47 if let Some(schema) = &self.schema {
48 schema
49 } else {
50 ""
51 },
52 if self.schema.is_some() { "." } else { "" },
53 self.table
54 )
55 }
56}