Skip to main content

surrealdb_expr/expr/convert/statements/
access.rs

1//! `sql` -> `expr` conversions for [`crate::sql::statements::access`].
2//!
3//! Lives in core rather than beside the AST: `surrealdb-sql` sits below
4//! core, so it cannot name `expr` types.
5
6use crate::sql::statements::access::*;
7
8impl From<AccessStatement> for crate::expr::statements::access::AccessStatement {
9	fn from(v: AccessStatement) -> Self {
10		match v {
11			AccessStatement::Grant(v) => Self::Grant(v.into()),
12			AccessStatement::Show(v) => Self::Show(v.into()),
13			AccessStatement::Revoke(v) => Self::Revoke(v.into()),
14			AccessStatement::Purge(v) => Self::Purge(v.into()),
15		}
16	}
17}
18
19impl From<crate::expr::statements::access::AccessStatement> for AccessStatement {
20	fn from(v: crate::expr::statements::access::AccessStatement) -> Self {
21		match v {
22			crate::expr::statements::access::AccessStatement::Grant(v) => Self::Grant(v.into()),
23			crate::expr::statements::access::AccessStatement::Show(v) => Self::Show(v.into()),
24			crate::expr::statements::access::AccessStatement::Revoke(v) => Self::Revoke(v.into()),
25			crate::expr::statements::access::AccessStatement::Purge(v) => Self::Purge(v.into()),
26		}
27	}
28}
29
30impl From<AccessStatementGrant> for crate::expr::statements::access::AccessStatementGrant {
31	fn from(v: AccessStatementGrant) -> Self {
32		Self {
33			ac: v.ac,
34			base: v.base.map(Into::into),
35			subject: v.subject.into(),
36		}
37	}
38}
39
40impl From<crate::expr::statements::access::AccessStatementGrant> for AccessStatementGrant {
41	fn from(v: crate::expr::statements::access::AccessStatementGrant) -> Self {
42		Self {
43			ac: v.ac,
44			base: v.base.map(Into::into),
45			subject: v.subject.into(),
46		}
47	}
48}
49
50impl From<AccessStatementShow> for crate::expr::statements::access::AccessStatementShow {
51	fn from(v: AccessStatementShow) -> Self {
52		Self {
53			ac: v.ac,
54			base: v.base.map(Into::into),
55			gr: v.gr,
56			cond: v.cond.map(Into::into),
57		}
58	}
59}
60
61impl From<crate::expr::statements::access::AccessStatementShow> for AccessStatementShow {
62	fn from(v: crate::expr::statements::access::AccessStatementShow) -> Self {
63		Self {
64			ac: v.ac,
65			base: v.base.map(Into::into),
66			gr: v.gr,
67			cond: v.cond.map(Into::into),
68		}
69	}
70}
71
72impl From<AccessStatementRevoke> for crate::expr::statements::access::AccessStatementRevoke {
73	fn from(v: AccessStatementRevoke) -> Self {
74		Self {
75			ac: v.ac,
76			base: v.base.map(Into::into),
77			gr: v.gr,
78			cond: v.cond.map(Into::into),
79		}
80	}
81}
82
83impl From<crate::expr::statements::access::AccessStatementRevoke> for AccessStatementRevoke {
84	fn from(v: crate::expr::statements::access::AccessStatementRevoke) -> Self {
85		Self {
86			ac: v.ac,
87			base: v.base.map(Into::into),
88			gr: v.gr,
89			cond: v.cond.map(Into::into),
90		}
91	}
92}
93
94impl From<AccessStatementPurge> for crate::expr::statements::access::AccessStatementPurge {
95	fn from(v: AccessStatementPurge) -> Self {
96		Self {
97			ac: v.ac,
98			base: v.base.map(From::from),
99			kind: v.kind.into(),
100			grace: v.grace.into(),
101		}
102	}
103}
104
105impl From<crate::expr::statements::access::AccessStatementPurge> for AccessStatementPurge {
106	fn from(v: crate::expr::statements::access::AccessStatementPurge) -> Self {
107		Self {
108			ac: v.ac,
109			base: v.base.map(From::from),
110			kind: v.kind.into(),
111			grace: v.grace.into(),
112		}
113	}
114}
115
116impl From<PurgeKind> for crate::expr::statements::access::PurgeKind {
117	fn from(v: PurgeKind) -> Self {
118		match v {
119			PurgeKind::Expired => crate::expr::statements::access::PurgeKind::Expired,
120			PurgeKind::Revoked => crate::expr::statements::access::PurgeKind::Revoked,
121			PurgeKind::Both => crate::expr::statements::access::PurgeKind::Both,
122		}
123	}
124}
125
126impl From<crate::expr::statements::access::PurgeKind> for PurgeKind {
127	fn from(v: crate::expr::statements::access::PurgeKind) -> Self {
128		match v {
129			crate::expr::statements::access::PurgeKind::Expired => PurgeKind::Expired,
130			crate::expr::statements::access::PurgeKind::Revoked => PurgeKind::Revoked,
131			crate::expr::statements::access::PurgeKind::Both => PurgeKind::Both,
132		}
133	}
134}
135
136impl From<Subject> for crate::expr::statements::access::Subject {
137	fn from(v: Subject) -> Self {
138		match v {
139			Subject::Record(id) => Self::Record(id.into()),
140			Subject::User(name) => Self::User(name),
141		}
142	}
143}
144
145impl From<crate::expr::statements::access::Subject> for Subject {
146	fn from(v: crate::expr::statements::access::Subject) -> Self {
147		match v {
148			crate::expr::statements::access::Subject::Record(id) => Self::Record(id.into()),
149			crate::expr::statements::access::Subject::User(name) => Self::User(name),
150		}
151	}
152}