Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T04:47:44.393Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

domain.rs

65 lines · 1.8 KB · rust
1use crate::connection::Connection;
2
3pub trait Domain: 'static {
4    const NAME: &str;
5    const MIGRATIONS: &[&str];
6
7    fn should_allow_migration_change(_index: usize, _old: &str, _new: &str) -> bool {
8        false
9    }
10}
11
12pub trait Migrator: 'static {
13    fn migrate(connection: &Connection) -> anyhow::Result<()>;
14}
15
16impl Migrator for () {
17    fn migrate(_connection: &Connection) -> anyhow::Result<()> {
18        Ok(()) // Do nothing
19    }
20}
21
22impl<D: Domain> Migrator for D {
23    fn migrate(connection: &Connection) -> anyhow::Result<()> {
24        connection.migrate(
25            Self::NAME,
26            Self::MIGRATIONS,
27            &mut Self::should_allow_migration_change,
28        )
29    }
30}
31
32impl<D1: Domain, D2: Domain> Migrator for (D1, D2) {
33    fn migrate(connection: &Connection) -> anyhow::Result<()> {
34        D1::migrate(connection)?;
35        D2::migrate(connection)
36    }
37}
38
39impl<D1: Domain, D2: Domain, D3: Domain> Migrator for (D1, D2, D3) {
40    fn migrate(connection: &Connection) -> anyhow::Result<()> {
41        D1::migrate(connection)?;
42        D2::migrate(connection)?;
43        D3::migrate(connection)
44    }
45}
46
47impl<D1: Domain, D2: Domain, D3: Domain, D4: Domain> Migrator for (D1, D2, D3, D4) {
48    fn migrate(connection: &Connection) -> anyhow::Result<()> {
49        D1::migrate(connection)?;
50        D2::migrate(connection)?;
51        D3::migrate(connection)?;
52        D4::migrate(connection)
53    }
54}
55
56impl<D1: Domain, D2: Domain, D3: Domain, D4: Domain, D5: Domain> Migrator for (D1, D2, D3, D4, D5) {
57    fn migrate(connection: &Connection) -> anyhow::Result<()> {
58        D1::migrate(connection)?;
59        D2::migrate(connection)?;
60        D3::migrate(connection)?;
61        D4::migrate(connection)?;
62        D5::migrate(connection)
63    }
64}
65
Served at tenant.openagents/omega Member data and write actions are omitted.