mengstack-api/internal/modules/org/infrastructure/tenant_repo.go
MengStack Dev b13427e76c feat(org,audit): M4 组织管理 + 审计日志
org 模块:
- tenants 表 (UUID PK, name, slug, status, settings)
- 完整 CRUD API: /api/v1/org/tenants
- 多租户隔离

audit 模块:
- audit_logs 表 (actor, action, resource, IP, 时间)
- 查询 API: /api/v1/audit/logs (支持分页+筛选)
- 按 tenant_id/user_id/action/resource 过滤
2026-10-03 00:58:49 +08:00

48 lines
1.3 KiB
Go

package infrastructure
import (
"context"
"mengstack/internal/modules/org/domain"
"gorm.io/gorm"
)
type tenantRepo struct {
db *gorm.DB
}
func NewTenantRepository(db *gorm.DB) domain.TenantRepository {
return &tenantRepo{db: db}
}
func (r *tenantRepo) Create(ctx context.Context, tenant *domain.Tenant) error {
return r.db.WithContext(ctx).Create(tenant).Error
}
func (r *tenantRepo) FindByID(ctx context.Context, id string) (*domain.Tenant, error) {
var tenant domain.Tenant
err := r.db.WithContext(ctx).Where("id = ?", id).First(&tenant).Error
return &tenant, err
}
func (r *tenantRepo) FindBySlug(ctx context.Context, slug string) (*domain.Tenant, error) {
var tenant domain.Tenant
err := r.db.WithContext(ctx).Where("slug = ?", slug).First(&tenant).Error
return &tenant, err
}
func (r *tenantRepo) FindAll(ctx context.Context) ([]domain.Tenant, error) {
var tenants []domain.Tenant
err := r.db.WithContext(ctx).Order("created_at DESC").Find(&tenants).Error
return tenants, err
}
func (r *tenantRepo) Update(ctx context.Context, tenant *domain.Tenant) error {
return r.db.WithContext(ctx).Save(tenant).Error
}
func (r *tenantRepo) Delete(ctx context.Context, id string) error {
return r.db.WithContext(ctx).Where("id = ?", id).Delete(&domain.Tenant{}).Error
}