first commit
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Fitness_core_BE.Models
|
||||
{
|
||||
// Tenant-DB only, one row per customer this gym has ever enrolled. Every tenant-local
|
||||
// table that used to FK straight to the central Customer.CusId keeps doing so, unchanged
|
||||
// -- TenantCustomerLinkId IS the central Customer.CusId (same GUID value), not a new
|
||||
// surrogate key. That's deliberate: a fresh surrogate key would mean "customerId" holds
|
||||
// a different value depending on whether it's about to query a central or a tenant table,
|
||||
// which is exactly the kind of silent, hard-to-spot bug this split needs to avoid. EF/MySQL
|
||||
// still can't enforce this as a real cross-schema FK constraint -- it's just data -- but the
|
||||
// ID space stays uniform everywhere, and this row is also the local anchor tenant tables
|
||||
// join against for cached display fields without a central round-trip.
|
||||
public class TenantCustomerLink
|
||||
{
|
||||
[Key]
|
||||
public Guid TenantCustomerLinkId { get; set; } // == central Customer.CusId
|
||||
|
||||
// = the shared login User id (same GUID in Auth's Users table), cached.
|
||||
public Guid CentralUserId { get; set; }
|
||||
|
||||
public string? DisplayName { get; set; }
|
||||
public string? PrimaryPhoneCached { get; set; }
|
||||
public string? EmailCached { get; set; }
|
||||
|
||||
// What a client-initiated delete flips. Central Customer.IsActive is never touched
|
||||
// by a client-initiated delete -- see CustomerRepository.DeactivateCustomerForClient.
|
||||
public bool IsActiveAtThisClient { get; set; } = true;
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user