/// <summary> /// Takes information in the additional info block /// and updates members with it /// </summary> /// <param name="data"></param> public static void ApplyAdditionalInfoToMembers(AtomModel data) { if (data.AdditionalInfo.ShouldHidePrimaryKey()) { data.Members.Insert(0, AtomMembers.Long(data.Name + "Id") .Key() .Generated() .Flag(MemberFlags.HiddenId)); } if (data.AdditionalInfo.AutoGenId.GetValueOrDefault()) { data.Members.Insert(0, AtomMembers.Long(data.Name + "Id") .Key() .Generated()); } if (data.AdditionalInfo.Temporal.HasTemporal ?? false) { if (data.AdditionalInfo.Temporal.CreatedOn.GetValueOrDefault(true)) { var created = BuildDateTimeMemberInfo(data.AdditionalInfo.Temporal, Constants.Members.CreatedAtDateTime) .NotUpdateable() .Flag(MemberFlags.CreatedDateTimeTracking) .Generated(); if (data.AdditionalInfo.Temporal.IndexCreatedOn ?? false) { created.Queryable = true; } created.SortDirection = data.AdditionalInfo.Temporal.CreatedOnSort; data.Members.Add(created); } if (data.AdditionalInfo.Temporal.LastModified.GetValueOrDefault(true)) { var lastModified = BuildDateTimeMemberInfo(data.AdditionalInfo.Temporal, Constants.Members.LastModifiedDateTime) .NotUpdateable() .Flag(MemberFlags.LastModifiedDateTimetracking) .Generated(); if (data.AdditionalInfo.Temporal.IndexLastModified ?? false) { lastModified.Queryable = true; } lastModified.SortDirection = data.AdditionalInfo.Temporal.LastModifiedSort; data.Members.Add(lastModified); } } if (data.AdditionalInfo.UseSoftDeletes ?? false) { data.Members.Add( AtomMembers.Bool(Constants.Members.IsDeleted) .WithDefault(new BoolDefault(false)) .Flag(MemberFlags.SoftDeleteTracking) .Generated()); } }
private static AtomMemberInfo BuildDateTimeMemberInfo(TemporalInfo temporalInfo, string name) { return(temporalInfo.UseDateTime2.GetValueOrDefault(false) ? AtomMembers.DateTime2(name, temporalInfo.DateTime2Precision) : AtomMembers.DateTime(name)); }