@@ -17,45 +17,92 @@ public SqlServerDataProvider(RelationalDbOptions options)
1717 _options = options ;
1818 }
1919
20- public async Task < ( IEnumerable < LogModel > , int ) > FetchDataAsync ( int page , int count , string level = null )
20+ public async Task < ( IEnumerable < LogModel > , int ) > FetchDataAsync (
21+ int page ,
22+ int count ,
23+ string logLevel = null ,
24+ string searchCriteria = null
25+ )
2126 {
22- using ( IDbConnection connection = new SqlConnection ( _options . ConnectionString ) )
23- {
24- var logsTask = GetLogsAsync ( page - 1 , count , level ) ;
25- var logCountTask = CountLogsAsync ( ) ;
27+ var logsTask = GetLogsAsync ( page - 1 , count , logLevel , searchCriteria ) ;
28+ var logCountTask = CountLogsAsync ( logLevel , searchCriteria ) ;
2629
27- await Task . WhenAll ( logsTask , logCountTask ) ;
30+ await Task . WhenAll ( logsTask , logCountTask ) ;
2831
29- return ( await logsTask , await logCountTask ) ;
30- }
32+ return ( await logsTask , await logCountTask ) ;
3133 }
3234
33- private async Task < IEnumerable < LogModel > > GetLogsAsync ( int page , int count , string level )
35+ private async Task < IEnumerable < LogModel > > GetLogsAsync ( int page , int count , string level , string searchCriteria )
3436 {
3537 var queryBuilder = new StringBuilder ( ) ;
36- queryBuilder . Append ( "SELECT[Id], [Message],[Level], [TimeStamp], [Exception], [Properties] FROM[" ) ;
38+ queryBuilder . Append ( "SELECT [Id], [Message], [Level], [TimeStamp], [Exception], [Properties] FROM[" ) ;
3739 queryBuilder . Append ( _options . Schema ) ;
3840 queryBuilder . Append ( "].[" ) ;
3941 queryBuilder . Append ( _options . TableName ) ;
4042 queryBuilder . Append ( "] " ) ;
4143
44+ var whereIncluded = false ;
45+
4246 if ( ! string . IsNullOrEmpty ( level ) )
47+ {
4348 queryBuilder . Append ( "WHERE [LEVEL] = @Level " ) ;
49+ whereIncluded = true ;
50+ }
51+
52+ if ( ! string . IsNullOrEmpty ( searchCriteria ) )
53+ {
54+ queryBuilder . Append ( whereIncluded
55+ ? "AND [Message] LIKE @Search OR [Exception] LIKE @Search "
56+ : "WHERE [Message] LIKE @Search OR [Exception] LIKE @Search " ) ;
57+ }
4458
4559 queryBuilder . Append ( "ORDER BY Id DESC OFFSET @Offset ROWS FETCH NEXT @Count ROWS ONLY" ) ;
4660
4761 using ( IDbConnection connection = new SqlConnection ( _options . ConnectionString ) )
4862 {
49- return await connection . QueryAsync < LogModel > ( queryBuilder . ToString ( ) , new { Offset = page , Count = count , Level = level } ) ;
63+ return await connection . QueryAsync < LogModel > ( queryBuilder . ToString ( ) ,
64+ new
65+ {
66+ Offset = page ,
67+ Count = count ,
68+ Level = level ,
69+ Search = searchCriteria != null ? "%" + searchCriteria + "%" : null
70+ } ) ;
5071 }
5172 }
5273
53- public async Task < int > CountLogsAsync ( )
74+ public async Task < int > CountLogsAsync ( string level , string searchCriteria )
5475 {
55- var query = $ "SELECT COUNT(Id) FROM [{ _options . Schema } ].[{ _options . TableName } ]";
76+ var queryBuilder = new StringBuilder ( ) ;
77+ queryBuilder . Append ( "SELECT COUNT(Id) FROM[" ) ;
78+ queryBuilder . Append ( _options . Schema ) ;
79+ queryBuilder . Append ( "].[" ) ;
80+ queryBuilder . Append ( _options . TableName ) ;
81+ queryBuilder . Append ( "] " ) ;
82+
83+ var whereIncluded = false ;
84+
85+ if ( ! string . IsNullOrEmpty ( level ) )
86+ {
87+ queryBuilder . Append ( "WHERE [LEVEL] = @Level " ) ;
88+ whereIncluded = true ;
89+ }
90+
91+ if ( ! string . IsNullOrEmpty ( searchCriteria ) )
92+ {
93+ queryBuilder . Append ( whereIncluded
94+ ? "AND [Message] LIKE @Search OR [Exception] LIKE @Search "
95+ : "WHERE [Message] LIKE @Search OR [Exception] LIKE @Search " ) ;
96+ }
97+
5698 using ( IDbConnection connection = new SqlConnection ( _options . ConnectionString ) )
5799 {
58- return await connection . ExecuteScalarAsync < int > ( query ) ;
100+ return await connection . ExecuteScalarAsync < int > ( queryBuilder . ToString ( ) ,
101+ new
102+ {
103+ Level = level ,
104+ Search = searchCriteria != null ? "%" + searchCriteria + "%" : null
105+ } ) ;
59106 }
60107 }
61108 }
0 commit comments