lava_api_mock/
users.rs

1use boulder::{BuildableWithPersianRug, GeneratableWithPersianRug};
2use boulder::{Inc, Pattern, Some as GSome};
3use django_query::{
4    filtering::FilterableWithPersianRug, row::IntoRowWithPersianRug,
5    sorting::SortableWithPersianRug,
6};
7use persian_rug::{contextual, Context, Proxy};
8
9/// A user in the LAVA API
10// FIXME: Deriving sort and IntoRowWithPersianRug needlessly
11#[derive(
12    Clone,
13    Debug,
14    FilterableWithPersianRug,
15    SortableWithPersianRug,
16    IntoRowWithPersianRug,
17    BuildableWithPersianRug,
18    GeneratableWithPersianRug,
19)]
20#[django(persian_rug(context=C, access(User<C>, Group<C>)))]
21#[boulder(persian_rug(context=C, access(User<C>, Group<C>)))]
22#[contextual(C)]
23pub struct User<C: Context + 'static> {
24    #[boulder(generator=Inc(0))]
25    #[django(sort)]
26    pub id: i64,
27    #[boulder(buildable_with_persian_rug, generatable_with_persian_rug)]
28    #[django(traverse, foreign_key = "id")]
29    pub group: Option<Proxy<Group<C>>>,
30    #[boulder(default="test-username",
31              generator=Pattern!("test-user-{}", Inc(1)))]
32    #[django(op(in, contains, icontains, startswith, endswith))]
33    pub username: String,
34    #[boulder(default=Some("test@test.com".to_string()),
35              generator=GSome(Pattern!("test-user-{}@example.com", Inc(1))))]
36    #[django(op(in, contains, icontains, startswith, endswith))]
37    pub email: Option<String>,
38}
39
40/// A group in the LAVA API
41// FIXME: Deriving sort and IntoRowWithPersianRug needlessly
42#[derive(
43    Clone,
44    Debug,
45    FilterableWithPersianRug,
46    SortableWithPersianRug,
47    IntoRowWithPersianRug,
48    BuildableWithPersianRug,
49    GeneratableWithPersianRug,
50)]
51#[django(persian_rug(context=C, access(Group<C>)))]
52#[boulder(persian_rug(context=C, access(Group<C>)))]
53#[contextual(C)]
54pub struct Group<C: Context + 'static> {
55    #[django(exclude)]
56    _marker: core::marker::PhantomData<C>,
57    #[boulder(generator=Inc(0))]
58    #[django(sort)]
59    pub id: i64,
60    #[boulder(default="test-group",
61              generator=Pattern!("test-group-{}", Inc(1)))]
62    #[django(op(in, contains, icontains, startswith, endswith))]
63    pub name: String,
64}