using Azaion.Common.Entities; using LinqToDB; using LinqToDB.Mapping; namespace Azaion.Common.Database; public static class AzaionDbSchemaHolder { public static readonly MappingSchema MappingSchema; static AzaionDbSchemaHolder() { MappingSchema = new MappingSchema(); MappingSchema.EntityDescriptorCreatedCallback = (_, entityDescriptor) => { foreach (var entityDescriptorColumn in entityDescriptor.Columns) entityDescriptorColumn.ColumnName = entityDescriptorColumn.ColumnName.ToSnakeCase(); }; var builder = new FluentMappingBuilder(MappingSchema); builder.Entity() .HasTableName("users") .Property(x => x.Id) .IsPrimaryKey() .HasDataType(DataType.Guid) .Property(x => x.Role) .HasDataType(DataType.Text) .HasConversion(v => v.ToString(), v => (RoleEnum)Enum.Parse(typeof(RoleEnum), v)); builder.Build(); } }