Initial commit: Open sourcing all of the Maple Open Technologies code.
This commit is contained in:
commit
755d54a99d
2010 changed files with 448675 additions and 0 deletions
|
|
@ -0,0 +1,56 @@
|
|||
package tenant
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gocql/gocql"
|
||||
|
||||
domaintenant "codeberg.org/mapleopentech/monorepo/cloud/maplepress-backend/internal/domain/tenant"
|
||||
"codeberg.org/mapleopentech/monorepo/cloud/maplepress-backend/internal/repository/tenant/models"
|
||||
)
|
||||
|
||||
// Create creates a new tenant
|
||||
// Uses batched writes to maintain consistency across denormalized tables
|
||||
func (r *repository) Create(ctx context.Context, t *domaintenant.Tenant) error {
|
||||
// Convert to table models
|
||||
tenantByID := models.FromTenant(t)
|
||||
tenantBySlug := models.FromTenantBySlug(t)
|
||||
tenantByStatus := models.FromTenantByStatus(t)
|
||||
|
||||
// Create batch for atomic write
|
||||
batch := r.session.NewBatch(gocql.LoggedBatch)
|
||||
|
||||
// Insert into tenants_by_id table
|
||||
batch.Query(`INSERT INTO tenants_by_id (id, name, slug, status, created_at, updated_at,
|
||||
created_from_ip_address, created_from_ip_timestamp, modified_from_ip_address, modified_from_ip_timestamp)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
tenantByID.ID, tenantByID.Name, tenantByID.Slug, tenantByID.Status,
|
||||
tenantByID.CreatedAt, tenantByID.UpdatedAt,
|
||||
tenantByID.CreatedFromIPAddress, tenantByID.CreatedFromIPTimestamp,
|
||||
tenantByID.ModifiedFromIPAddress, tenantByID.ModifiedFromIPTimestamp)
|
||||
|
||||
// Insert into tenants_by_slug table
|
||||
batch.Query(`INSERT INTO tenants_by_slug (slug, id, name, status, created_at, updated_at,
|
||||
created_from_ip_address, created_from_ip_timestamp, modified_from_ip_address, modified_from_ip_timestamp)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
tenantBySlug.Slug, tenantBySlug.ID, tenantBySlug.Name, tenantBySlug.Status,
|
||||
tenantBySlug.CreatedAt, tenantBySlug.UpdatedAt,
|
||||
tenantBySlug.CreatedFromIPAddress, tenantBySlug.CreatedFromIPTimestamp,
|
||||
tenantBySlug.ModifiedFromIPAddress, tenantBySlug.ModifiedFromIPTimestamp)
|
||||
|
||||
// Insert into tenants_by_status table
|
||||
batch.Query(`INSERT INTO tenants_by_status (status, id, name, slug, created_at, updated_at,
|
||||
created_from_ip_address, created_from_ip_timestamp, modified_from_ip_address, modified_from_ip_timestamp)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
tenantByStatus.Status, tenantByStatus.ID, tenantByStatus.Name, tenantByStatus.Slug,
|
||||
tenantByStatus.CreatedAt, tenantByStatus.UpdatedAt,
|
||||
tenantByStatus.CreatedFromIPAddress, tenantByStatus.CreatedFromIPTimestamp,
|
||||
tenantByStatus.ModifiedFromIPAddress, tenantByStatus.ModifiedFromIPTimestamp)
|
||||
|
||||
// Execute batch
|
||||
if err := r.session.ExecuteBatch(batch); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue