Esempio n. 1
0
        /// <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());
            }
        }
Esempio n. 2
0
 private static AtomMemberInfo BuildDateTimeMemberInfo(TemporalInfo temporalInfo, string name)
 {
     return(temporalInfo.UseDateTime2.GetValueOrDefault(false)
         ? AtomMembers.DateTime2(name, temporalInfo.DateTime2Precision)
         : AtomMembers.DateTime(name));
 }