1- using System ;
2- using Microsoft . Extensions . DependencyInjection ;
1+ using Microsoft . Extensions . DependencyInjection ;
32using Serilog . Ui . Core ;
43using Serilog . Ui . Core . Interfaces ;
54using Serilog . Ui . Core . Models . Options ;
5+ using System ;
66
7- namespace Serilog . Ui . MySqlProvider . Extensions
7+ namespace Serilog . Ui . MySqlProvider . Extensions ;
8+
9+ /// <summary>
10+ /// MySQL data provider specific extension methods for <see cref="ISerilogUiOptionsBuilder"/>.
11+ /// </summary>
12+ public static class SerilogUiOptionBuilderExtensions
813{
914 /// <summary>
10- /// MySQL data provider specific extension methods for <see cref="ISerilogUiOptionsBuilder"/>.
15+ /// Configures the SerilogUi to connect to a MySQL/MariaDb database expecting
16+ /// <seealso href="https://github.com/saleem-mirza/serilog-sinks-mysql">Serilog.Sinks.MySQL.</seealso> defaults.
17+ /// Provider expects sink to store timestamp in utc.
1118 /// </summary>
12- public static class SerilogUiOptionBuilderExtensions
19+ /// <param name="optionsBuilder"> The options builder. </param>
20+ /// <param name="setupOptions">The MySql options action.</param>
21+ public static ISerilogUiOptionsBuilder UseMySqlServer ( this ISerilogUiOptionsBuilder optionsBuilder , Action < RelationalDbOptions > setupOptions )
1322 {
14- /// <summary>
15- /// Configures the SerilogUi to connect to a MySQL/MariaDb database expecting
16- /// <seealso href="https://github.com/saleem-mirza/serilog-sinks-mysql">Serilog.Sinks.MySQL.</seealso> defaults.
17- /// Provider expects sink to store timestamp in utc.
18- /// </summary>
19- /// <param name="optionsBuilder"> The options builder. </param>
20- /// <param name="setupOptions">The MySql options action.</param>
21- public static ISerilogUiOptionsBuilder UseMySqlServer (
22- this ISerilogUiOptionsBuilder optionsBuilder ,
23- Action < RelationalDbOptions > setupOptions
24- )
25- {
26- var dbOptions = new RelationalDbOptions ( "dbo" ) ;
27- setupOptions ( dbOptions ) ;
28- dbOptions . Validate ( ) ;
29-
30- var providerName = dbOptions . GetProviderName ( MySqlDataProvider . MySqlProviderName ) ;
31-
32- optionsBuilder . RegisterExceptionAsStringForProviderKey ( providerName ) ;
23+ MySqlDbOptions dbOptions = new ( "dbo" ) ;
24+ setupOptions ( dbOptions ) ;
25+ dbOptions . Validate ( ) ;
3326
34- optionsBuilder . Services . AddScoped < IDataProvider , MySqlDataProvider > ( _ => new MySqlDataProvider ( dbOptions ) ) ;
27+ string providerName = dbOptions . GetProviderName ( MySqlDataProvider . MySqlProviderName ) ;
3528
36- return optionsBuilder ;
37- }
29+ optionsBuilder . RegisterExceptionAsStringForProviderKey ( providerName ) ;
30+ optionsBuilder . Services . AddScoped < IDataProvider , MySqlDataProvider > ( _ => new MySqlDataProvider ( dbOptions , new MySqlQueryBuilder < MySqlLogModel > ( ) ) ) ;
3831
39- /// <summary>
40- /// Configures the SerilogUi to connect to a MySQL/MariaDb database expecting
41- /// <seealso href="https://github.com/TeleSoftas/serilog-sinks-mariadb">Serilog.Sinks.MariaDB.</seealso> defaults.
42- /// Provider expects sink to store timestamp in utc.
43- /// </summary>
44- /// <param name="optionsBuilder"> The options builder. </param>
45- /// <param name="setupOptions">The MySql options action.</param>
46- public static ISerilogUiOptionsBuilder UseMariaDbServer (
47- this ISerilogUiOptionsBuilder optionsBuilder ,
48- Action < RelationalDbOptions > setupOptions
49- ) => optionsBuilder . UseMariaDbServer < MySqlLogModel > ( setupOptions ) ;
32+ return optionsBuilder ;
33+ }
5034
51- /// <summary>
52- /// Configures the SerilogUi to connect to a MySQL/MariaDb database expecting
53- /// <seealso href="https://github.com/TeleSoftas/serilog-sinks-mariadb">Serilog.Sinks.MariaDB.</seealso> defaults.
54- /// Provider expects sink to store timestamp in utc.
55- /// </summary>
56- /// <typeparam name="T">The log model, containing any additional columns. It must inherit <see cref="MySqlLogModel"/>.</typeparam>
57- /// <param name="optionsBuilder"> The options builder. </param>
58- /// <param name="setupOptions">The MySql options action.</param>
59- public static ISerilogUiOptionsBuilder UseMariaDbServer < T > (
60- this ISerilogUiOptionsBuilder optionsBuilder ,
61- Action < RelationalDbOptions > setupOptions
62- ) where T : MySqlLogModel
63- {
64- var dbOptions = new RelationalDbOptions ( "dbo" ) ;
65- setupOptions ( dbOptions ) ;
66- dbOptions . Validate ( ) ;
35+ /// <summary>
36+ /// Configures the SerilogUi to connect to a MySQL/MariaDb database expecting
37+ /// <seealso href="https://github.com/TeleSoftas/serilog-sinks-mariadb">Serilog.Sinks.MariaDB.</seealso> defaults.
38+ /// Provider expects sink to store timestamp in utc.
39+ /// </summary>
40+ /// <param name="optionsBuilder"> The options builder. </param>
41+ /// <param name="setupOptions">The MySql options action.</param>
42+ public static ISerilogUiOptionsBuilder UseMariaDbServer ( this ISerilogUiOptionsBuilder optionsBuilder , Action < RelationalDbOptions > setupOptions )
43+ => optionsBuilder . UseMariaDbServer < MySqlLogModel > ( setupOptions ) ;
6744
68- var providerName = dbOptions . GetProviderName ( MariaDbDataProvider . ProviderName ) ;
45+ /// <summary>
46+ /// Configures the SerilogUi to connect to a MySQL/MariaDb database expecting
47+ /// <seealso href="https://github.com/TeleSoftas/serilog-sinks-mariadb">Serilog.Sinks.MariaDB.</seealso> defaults.
48+ /// Provider expects sink to store timestamp in utc.
49+ /// </summary>
50+ /// <typeparam name="T">The log model, containing any additional columns. It must inherit <see cref="MySqlLogModel"/>.</typeparam>
51+ /// <param name="optionsBuilder"> The options builder. </param>
52+ /// <param name="setupOptions">The MySql options action.</param>
53+ public static ISerilogUiOptionsBuilder UseMariaDbServer < T > ( this ISerilogUiOptionsBuilder optionsBuilder , Action < RelationalDbOptions > setupOptions )
54+ where T : MySqlLogModel
55+ {
56+ MariaDbOptions dbOptions = new ( "dbo" ) ;
57+ setupOptions ( dbOptions ) ;
58+ dbOptions . Validate ( ) ;
6959
70- optionsBuilder . RegisterExceptionAsStringForProviderKey ( providerName ) ;
60+ string providerName = dbOptions . GetProviderName ( MariaDbDataProvider . ProviderName ) ;
7161
72- var customModel = typeof ( T ) != typeof ( MySqlLogModel ) ;
73- if ( customModel )
74- {
75- optionsBuilder . RegisterColumnsInfo < T > ( providerName ) ;
76- optionsBuilder . Services . AddScoped < IDataProvider > ( _ => new MariaDbDataProvider < T > ( dbOptions ) ) ;
77- return optionsBuilder ;
78- }
62+ optionsBuilder . RegisterExceptionAsStringForProviderKey ( providerName ) ;
7963
80- optionsBuilder . Services . AddScoped < IDataProvider > ( _ => new MariaDbDataProvider ( dbOptions ) ) ;
81- return optionsBuilder ;
64+ bool customModel = typeof ( T ) != typeof ( MySqlLogModel ) ;
65+ if ( customModel )
66+ {
67+ optionsBuilder . RegisterColumnsInfo < T > ( providerName ) ;
68+ optionsBuilder . Services . AddScoped < IDataProvider > ( _ => new MariaDbDataProvider < T > ( dbOptions , new MySqlQueryBuilder < T > ( ) ) ) ;
69+ }
70+ else
71+ {
72+ optionsBuilder . Services . AddScoped < IDataProvider > ( _ => new MariaDbDataProvider ( dbOptions , new MySqlQueryBuilder < MySqlLogModel > ( ) ) ) ;
8273 }
74+
75+ return optionsBuilder ;
8376 }
8477}
0 commit comments