diff --git a/backend/spec/models.md b/backend/spec/models.md index 3d09ee5..4cb452c 100644 --- a/backend/spec/models.md +++ b/backend/spec/models.md @@ -63,9 +63,9 @@ Tenants are customers of the service, identified by a nostr `pubkey`. Public met A relay is a nostr relay owned by a `tenant` and hosted by the attached zooid instance. Relay subdomains MUST be unique. -- `id` - a random ID identifying the relay +- `id` - calculated based on `subdomain` + 8 random hex chars - `tenant` - the tenant's pubkey -- `schema` - the relay's db schema (read_only, calculated based on `subdomain` + `id`) +- `schema` - the relay's db schema (read only, same as `id`) - `subdomain` - the relay's subdomain - `plan` - the relay's plan - `stripe_subscription_item_id` (nullable) - the Stripe subscription item id. Only set for relays on paid plans. diff --git a/backend/src/api.rs b/backend/src/api.rs index a7576b2..677897e 100644 --- a/backend/src/api.rs +++ b/backend/src/api.rs @@ -275,9 +275,6 @@ impl Api { return Err(RelayValidationError::PremiumFeature); } - if relay.schema.is_empty() { - relay.schema = format!("{}_{}", relay.subdomain.replace('-', "_"), relay.id); - } if relay.status.is_empty() { relay.status = RELAY_STATUS_ACTIVE.to_string(); } @@ -754,10 +751,16 @@ async fn create_relay( let auth = state.api.extract_auth_pubkey(&headers)?; state.api.require_admin_or_tenant(&auth, &payload.tenant)?; + let relay_id = format!( + "{}_{}", + payload.subdomain.replace('-', "_"), + &uuid::Uuid::new_v4().simple().to_string()[..8] + ); + let mut relay = Relay { - id: uuid::Uuid::new_v4().to_string(), + id: relay_id.clone(), tenant: payload.tenant, - schema: String::new(), + schema: relay_id.clone(), subdomain: payload.subdomain, plan: payload.plan, stripe_subscription_item_id: None, diff --git a/justfile b/justfile index c11ff72..cfbc876 100644 --- a/justfile +++ b/justfile @@ -5,6 +5,9 @@ dev: cd frontend && bun dev & wait +dev-backend: + cd backend && onchange src -ik -- bash -c 'RUST_LOG=backend=info cargo run' + dev-frontend: cd frontend && bun run dev @@ -27,7 +30,7 @@ build-backend: cd backend && cargo build build-frontend: - cd frontend && bun run build + cd frontend && bun i && bun run build fmt: fmt-backend