docs(NOTES): adding ideas about how to do the dynamic repositories
This commit is contained in:
parent
da01827419
commit
e3e8e55bf6
47
NOTES.md
47
NOTES.md
@ -49,3 +49,50 @@ It's not like that is a bad thing, given this is also one of the downsides I wit
|
|||||||
|
|
||||||
sea-orm-cli generate entity -u postgresql://miniweb:miniweb@localhost:54321/miniweb -o entity/src --lib
|
sea-orm-cli generate entity -u postgresql://miniweb:miniweb@localhost:54321/miniweb -o entity/src --lib
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Admin Registry
|
||||||
|
|
||||||
|
### Dynamic index functions
|
||||||
|
|
||||||
|
|
||||||
|
### Dynamic Repo Traits
|
||||||
|
|
||||||
|
```rust
|
||||||
|
trait AdminRepository {
|
||||||
|
type Item;
|
||||||
|
type List;
|
||||||
|
|
||||||
|
fn get_item(&self, id: usize) -> Option<Self::Item>;
|
||||||
|
fn get_list(&self) -> Self::List;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct AdminRegistry {
|
||||||
|
repositories: HashMap<String, Box<dyn Any>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AdminRegistry {
|
||||||
|
fn register<R: AdminRepository + 'static>(&mut self, name: &str, repository: R) {
|
||||||
|
self.repositories.insert(name.to_string(), Box::new(repository));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```rust
|
||||||
|
struct UserRepository;
|
||||||
|
|
||||||
|
impl AdminRepository for UserRepository {
|
||||||
|
type Item = User;
|
||||||
|
type List = Vec<User>;
|
||||||
|
|
||||||
|
fn get_item(&self, id: usize) -> Option<User> {
|
||||||
|
// Retrieve a single user
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_list(&self) -> Vec<User> {
|
||||||
|
// Retrieve a list of users
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user