Initial Commit ...

This commit is contained in:
2024-01-25 04:37:38 +03:30
commit c5d69522a9
26 changed files with 1252 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
using System;
using Microsoft.Extensions.Logging;
using xCommons.Extensions;
using xExceptions.Constants;
namespace xModels.Base {
/// <summary>
/// a Base class which carry required things as a Father for it's childs ...
/// </summary>
public abstract class XBaseClass {
//
#region Properties ...
/// <summary>
/// LogTag which Specified for this class ...
/// </summary>
private readonly string LOG_TAG;
/// <summary>
/// logger instance ...
/// </summary>
private readonly ILogger logger;
#endregion
//
#region Constructor ...
public XBaseClass (ILoggerFactory loggerFactory) {
//
// Preparing Log Tag ...
LOG_TAG = this.GetType ().Name;
//
Type classType = this.GetType ();
logger = loggerFactory.CreateLogger (classType);
}
#endregion
//
#region Protected ...
/// <summary>
/// Extract Prepared Log MEssage ...
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
protected virtual string GetLogMessage (string message) {
//
// Prepare Log Message ...
message = $"{LOG_TAG} => {message}";
return message;
}
/// <summary>
/// Logging specific Message ...
/// </summary>
/// <param name="message"></param>
/// <param name="logLevel"></param>
protected virtual void LogMessage (
string message,
LogLevel logLevel = LogLevel.Information
) {
//
// Validate Args ...
if (message.IsNullOrEmpty ()) {
throw XException.InvalidArgs
.ToException ();
}
//
// Prepare Log Message ...
message = GetLogMessage (message);
//
// Logging Message ...
logger.Log (
message: message,
logLevel: logLevel
);
}
/// <summary>
/// Logging specific Message to Console ...
/// </summary>
/// <param name="message"></param>
protected virtual void ConsoleMessage (string message) {
//
// Validate Args ...
if (message.IsNullOrEmpty ()) {
throw XException.InvalidArgs
.ToException ();
}
//
// Prepare Log Message ...
message = GetLogMessage (message);
//
// Logging Message ...
Console.WriteLine (message);
}
#endregion
}
}
+7
View File
@@ -0,0 +1,7 @@
namespace xModels.Base {
/// <summary>
/// Descriptors classes Map required data for creating Entities on Seeding time ...
/// this is a Base Descriptor class ...
/// </summary>
public abstract class XBaseDescriptor { }
}
+7
View File
@@ -0,0 +1,7 @@
namespace xModels.Base {
/// <summary>
/// DTO - Data Transfer Objects is a kind of classes which Represent Entities ...
/// this is base Dto class ...
/// </summary>
public abstract class XBaseDto { }
}
+23
View File
@@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
namespace xModels.Base {
/// <summary>
/// Base Entity Class
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class XBaseEntity<T> {
/// <summary>
/// Entity Id
/// </summary>
/// <value>entity unique id</value>
[Key]
[Required]
public T Id { get; set; }
/// <summary>
/// Provided Soft Delete Behaviour ...
/// </summary>
/// <value></value>
public bool Deleted { get; set; }
}
}
+8
View File
@@ -0,0 +1,8 @@
using System;
namespace xModels.Base {
/// <summary>
/// a BaseEntity Class which has Id of Guid type
/// </summary>
public class XBaseGuidIDEntity : XBaseEntity<Guid> { }
}
+8
View File
@@ -0,0 +1,8 @@
using System.ComponentModel.DataAnnotations;
namespace xModels.Base {
/// <summary>
/// a BaseEntity Class which has Id of int type
/// </summary>
public abstract class XBaseIntIDEntity : XBaseEntity<int> { }
}
+11
View File
@@ -0,0 +1,11 @@
using System.Collections.Generic;
namespace xModels.Base {
/// <summary>
/// Range Request Classes Carry a List of Objects
/// </summary>
/// <typeparam name="T"></typeparam>
public class XBaseRangeRequest<T> {
public IEnumerable<T> Items { get; set; } = new HashSet<T> ();
}
}
+5
View File
@@ -0,0 +1,5 @@
namespace xModels.Base {
public abstract class XBaseStorableDto<TKey> : XBaseDto {
public abstract TKey Id { get; set; }
}
}
+8
View File
@@ -0,0 +1,8 @@
using System;
namespace xModels.Base {
/// <summary>
/// a BaseEntity Class which has Id of string type
/// </summary>
public class XBaseStringIDEntity : XBaseEntity<string> { }
}