62 lines
2.1 KiB
Go
62 lines
2.1 KiB
Go
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"
|
|
)
|
|
|
|
// GetByID retrieves a tenant by ID
|
|
func (r *repository) GetByID(ctx context.Context, id string) (*domaintenant.Tenant, error) {
|
|
var tenantByID models.TenantByID
|
|
|
|
query := `SELECT id, name, slug, status, created_at, updated_at,
|
|
created_from_ip_address, created_from_ip_timestamp, modified_from_ip_address, modified_from_ip_timestamp
|
|
FROM tenants_by_id
|
|
WHERE id = ?`
|
|
|
|
err := r.session.Query(query, id).
|
|
Consistency(gocql.Quorum).
|
|
Scan(&tenantByID.ID, &tenantByID.Name, &tenantByID.Slug, &tenantByID.Status,
|
|
&tenantByID.CreatedAt, &tenantByID.UpdatedAt,
|
|
&tenantByID.CreatedFromIPAddress, &tenantByID.CreatedFromIPTimestamp,
|
|
&tenantByID.ModifiedFromIPAddress, &tenantByID.ModifiedFromIPTimestamp)
|
|
|
|
if err != nil {
|
|
if err == gocql.ErrNotFound {
|
|
return nil, domaintenant.ErrTenantNotFound
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
return tenantByID.ToTenant(), nil
|
|
}
|
|
|
|
// GetBySlug retrieves a tenant by slug
|
|
func (r *repository) GetBySlug(ctx context.Context, slug string) (*domaintenant.Tenant, error) {
|
|
var tenantBySlug models.TenantBySlug
|
|
|
|
query := `SELECT slug, id, name, status, created_at, updated_at,
|
|
created_from_ip_address, created_from_ip_timestamp, modified_from_ip_address, modified_from_ip_timestamp
|
|
FROM tenants_by_slug
|
|
WHERE slug = ?`
|
|
|
|
err := r.session.Query(query, slug).
|
|
Consistency(gocql.Quorum).
|
|
Scan(&tenantBySlug.Slug, &tenantBySlug.ID, &tenantBySlug.Name, &tenantBySlug.Status,
|
|
&tenantBySlug.CreatedAt, &tenantBySlug.UpdatedAt,
|
|
&tenantBySlug.CreatedFromIPAddress, &tenantBySlug.CreatedFromIPTimestamp,
|
|
&tenantBySlug.ModifiedFromIPAddress, &tenantBySlug.ModifiedFromIPTimestamp)
|
|
|
|
if err != nil {
|
|
if err == gocql.ErrNotFound {
|
|
return nil, domaintenant.ErrTenantNotFound
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
return tenantBySlug.ToTenant(), nil
|
|
}
|