إطار المنخلالتصفية | الفرز | اختيال
SieveFramework هو إطار عمل قابل للتخصيص عالي الجودة يساعد على دمج عوامل التصفية والفرز والصفحات بسهولة في مشروعك بمستوى تجريد كافٍ. يوجد تحت الغطاء System.Linq.Expressions الذي يساعد على تحقيق أي عمليات مع المجموعات والحصول على دعم أصلي للاستعلام.
| مشروع | وصف |
|---|---|
SieveFramework | المشروع الأساسي مع الوظائف الأساسية |
SieveFramework.AspNetCore | التبعيات المطلوبة لدمج المنخل في مشاريع ASP.Net Core |
SieveFramework.AspNetCore.Swashbuckle | التبعيات المطلوبة لدمج المنخل مع إطار عمل Swagger |
المزود الرئيسي هو SieveProvider . إنه يحتوي فقط على مجموعة من ModelProvider التي تحتفظ بالمعلومات حول نموذج ملموس:
يعمل الموفر الرئيسي مع المسندات - مجموعات من الإجراءات ضمن مورد قابل للاستعلام. يمكن لكل مسند تنفيذ نوع واحد فقط من إجراءات الاستعلام ضمن المورد:
يساعد هذا التصميم على تفويض نفس النوع من العمليات إلى منفذ واحد ويتحكم في اتجاه العمليات في خط الأنابيب.
يتم تقديم تنسيق المرشح بواسطة المحللين ويستخدم للربط من طلب الاستعلام باستخدام رابط نموذج مخصص.
[!] سيتم ربط البيانات من نص الطلب بمجلدات نموذج ASP.Net الأصلية.
تكوين المحلل اللغوي الافتراضي:
| الاسم المستعار | وصف |
|---|---|
~ | NODE_DELIMITER - يُستخدم لتقسيم القيم داخل العقدة |
& | OPERATION_DELIMITER - يستخدم لتقسيم العمليات المختلفة (مقسم الاستعلام الافتراضي) |
filter= | FILTER - تحتوي معلمة الاستعلام على عامل التصفية |
sort= | SORT - تحتوي معلمة الاستعلام على أنواع |
take= | TAKE - تحتوي معلمة الاستعلام على حجم التحديد |
skip= | SKIP - تحتوي معلمة الاستعلام على حجم التخطي |
الميزة المخطط لها هي تنسيق DeepObject swagger لإلغاء تسلسل النموذج للاستعلام.
البنية: Property NODE_DELIMITER Alias NODE_DELIMITER Value
| الاسم المستعار (محلي) | الاسم المستعار (DeepObject) | وصف |
|---|---|---|
eq | المهام | يساوي |
neq | المهام | لا يساوي |
gt | المهام | أعظم من |
gte | المهام | أكبر من أو يساوي |
lt | المهام | أقل من |
lte | المهام | أقل من أو يساوي |
البنية: Filter NODE_DELIMITER Alias NODE_DELIMITER Filter
| الاسم المستعار (محلي) | الاسم المستعار (DeepObject) | وصف |
|---|---|---|
and | المهام | يسلسل المرشحات حسب والمنطق |
or | المهام | يسلسل المرشحات حسب أو المنطق |
يتم اشتقاق المرشح أولاً حسب الشرط
orالشرط، لذلك ستكونnode~and~node~or~node(node~and~node)~or~node.
البنية: Alias Property NODE_DELIMITER
| الاسم المستعار (محلي) | الاسم المستعار (DeepObject) | وصف |
|---|---|---|
asc | المهام | فرز حسب تصاعدي |
desc | المهام | الترتيب تنازلياً |
قد تكون عقد الفرز متسلسلة فقط
andالمنطق:
node~and~node
public void ConfigureServices ( IServiceCollection services )
{
services . AddSieveProvider ( config =>
{
// WithParser - Add custom Query parser. [NativeQueryParser] is default, no need to register them it's just an example
config . WithParser < NativeQueryParser > ( )
// ForAssemblies - Add assemblies to scan models by attributes [CanSort / CanFilter]
. ForAssemblies ( .. . )
// Fluent models registration
. ConfigureProvider ( provider =>
{
provider . AddModel < TestModel > ( builder =>
{
builder . CanSort ( p => p . TestProperty ) ;
builder . CanFilter ( p => p . TestProperty ) ;
} ) ;
} ) ;
} ) ;
services . AddControllers ( ) ;
} public class WeatherForecastController : ControllerBase
{
// [1] Accept processor through DI
private readonly ISieveProvider _sieve ;
public WeatherForecastController ( ISieveProvider sieve )
{
_sieve = sieve ;
}
// [2] Wrap processed model's resource with [Sieve] - It will be maped automaticly
[ HttpGet ]
public ActionResult GetCustom ( Sieve < WeatherForecast > model )
{
var rng = new Random ( ) ;
var query = Enumerable . Range ( 1 , 5 ) . Select ( index => new WeatherForecast
{
Date = DateTime . Now . AddDays ( index ) ,
TemperatureC = rng . Next ( - 20 , 55 ) ,
Summary = "Summary" + index
} ) . AsQueryable ( ) ;
// [3] Apply filter to resource
var result = _sieve . Apply ( query , model ) . ToArray ( ) ;
return Ok ( new
{
origin = query . ToArray ( ) ,
result = result
} ) ;
}
} public void ConfigureServices ( IServiceCollection services )
{
// [1] Must be registered before swagger
services . AddSieveProvider ( ) ;
services . AddControllers ( ) ;
services . AddSwaggerGen ( builder =>
{
// [2] Add configuration for swagger
services . AddSieveDescription ( builder ) ;
builder . SwaggerDoc ( "v1" , new OpenApiInfo
{
Title = "Test" ,
Version = "v1"
} ) ;
} ) ;
}تملأ أوصاف الغربال مخطط التباهي بنموذج الغربال المكتوب القوي وقائمة الخصائص المسموح بها للفرز والتصفية لكل إجراء من إجراءات واجهة برمجة التطبيقات.