Skip to content
This repository was archived by the owner on Jul 11, 2024. It is now read-only.

Commit c036bc1

Browse files
committed
🚧 Configuration rewrite
1 parent 8c03a59 commit c036bc1

File tree

17 files changed

+258
-176
lines changed

17 files changed

+258
-176
lines changed

Diff for: packages/foxcord_common/build.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ targets:
55
options:
66
copy_with: false
77
to_json: false
8+
union_key: type
89
json_serializable:
910
options:
1011
explicit_to_json: true

Diff for: packages/foxcord_common/lib/foxcord_common.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ export 'src/persistence/database.dart';
77
export 'src/service/authentication/authentication.dart';
88
export 'src/service/authentication/password.dart';
99
export 'src/service/authentication/token.dart';
10-
export 'src/utility/injectable.dart';
10+
export 'src/utility/injectable.dart';

Diff for: packages/foxcord_common/lib/src/configuration/database/database.dart

+18-9
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ import 'postgres/connection.dart';
1313
import 'postgres/endpoint.dart';
1414

1515
part 'database.freezed.dart';
16+
1617
part 'database.g.dart';
18+
1719
part 'database.mapper.dart';
1820

1921
/// Database connection configuration.
20-
@Freezed(unionKey: 'type', fallbackUnion: 'memory')
22+
@Freezed(fallbackUnion: 'memory')
2123
@MappableClass()
2224
interface class DatabaseConfiguration
2325
with DatabaseConfigurationMappable, _$DatabaseConfiguration {
@@ -32,41 +34,48 @@ interface class DatabaseConfiguration
3234
/// In-memory database backend.
3335
const factory DatabaseConfiguration.memory({
3436
/// Log database queries.
35-
@Default(DatabaseConfiguration._defaultLogStatements) bool logStatements,
37+
@Default(DatabaseConfiguration._defaultLogStatements) //
38+
bool logStatements,
3639
}) = _DatabaseConfigurationMemory;
3740

3841
/// Sqlite database backend.
3942
const factory DatabaseConfiguration.sqlite({
4043
/// Database file.
41-
@DartIOFileConverter() required File file,
44+
@DartIOFileConverter() //
45+
required File file,
4246

4347
/// Log database queries.
44-
@Default(DatabaseConfiguration._defaultLogStatements) bool logStatements,
48+
@Default(DatabaseConfiguration._defaultLogStatements) //
49+
bool logStatements,
4550
}) = _DatabaseConfigurationSqlite;
4651

4752
/// MariaDB database backend.
4853
@experimental
4954
const factory DatabaseConfiguration.mariadb({
5055
/// Database pool.
51-
required MySQLDatabasePoolConfiguration pool,
56+
@Default(MySQLDatabasePoolConfiguration()) //
57+
MySQLDatabasePoolConfiguration pool,
5258

5359
/// Log database queries.
54-
@Default(DatabaseConfiguration._defaultLogStatements) bool logStatements,
60+
@Default(DatabaseConfiguration._defaultLogStatements) //
61+
bool logStatements,
5562
}) = _DatabaseConfigurationMariadb;
5663

5764
/// Postgres database backend.
5865
const factory DatabaseConfiguration.postgres({
5966
/// Database endpoint.
60-
required PostgresDatabaseEndpointConfiguration endpoint,
67+
@Default(PostgresDatabaseEndpointConfiguration()) //
68+
PostgresDatabaseEndpointConfiguration endpoint,
6169

6270
/// Database connection.
6371
PostgresDatabaseConnectionConfiguration? connection,
6472

6573
/// Log database queries.
66-
@Default(DatabaseConfiguration._defaultLogStatements) bool logStatements,
74+
@Default(DatabaseConfiguration._defaultLogStatements) //
75+
bool logStatements,
6776

6877
/// Enable database migrations.
69-
@Default(DatabaseConfiguration._defaultEnableMigrations)
78+
@Default(DatabaseConfiguration._defaultEnableMigrations) //
7079
bool enableMigrations,
7180
}) = _DatabaseConfigurationPostgres;
7281

Diff for: packages/foxcord_common/lib/src/configuration/database/mysql/pool.dart

+19-24
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import 'package:freezed_annotation/freezed_annotation.dart';
33
import 'package:mysql_client/mysql_client.dart';
44

55
part 'pool.freezed.dart';
6+
67
part 'pool.g.dart';
8+
79
part 'pool.mapper.dart';
810

911
/// MySQL database pool configuration.
@@ -13,51 +15,44 @@ interface class MySQLDatabasePoolConfiguration
1315
with
1416
MySQLDatabasePoolConfigurationMappable,
1517
_$MySQLDatabasePoolConfiguration {
16-
/// Default MySQL port.
17-
static const int _defaultPort = 3306;
18-
19-
/// Default MariaDB collation.
20-
static const String _defaultCollation = 'utf8_general_ci';
21-
22-
/// Default MariaDB max connections.
23-
static const int _defaultMaxConnections = 5;
24-
25-
/// Default MariaDB connection timeout.
26-
static const Duration _defaultTimeout = Duration(seconds: 10);
27-
28-
/// Default MariaDB use SSL.
29-
static const bool _defaultSecure = false;
30-
3118
const MySQLDatabasePoolConfiguration._();
3219

3320
const factory MySQLDatabasePoolConfiguration({
3421
/// Database host.
35-
required String host,
22+
@Default('localhost') //
23+
String host,
3624

3725
/// Database port.
38-
@Default(MySQLDatabasePoolConfiguration._defaultPort) int port,
26+
@Default(3306) //
27+
int port,
3928

4029
/// Database name.
41-
required String database,
30+
@Default('foxcord') //
31+
String database,
4232

4333
/// Database username.
44-
required String username,
34+
@Default('root') //
35+
String username,
4536

4637
/// Database password.
47-
required String password,
38+
@Default('') //
39+
String password,
4840

4941
/// Maximum connections.
50-
@Default(MySQLDatabasePoolConfiguration._defaultMaxConnections)
42+
@Default(5) //
5143
int maxConnections,
5244

5345
/// Database collation.
54-
@Default(MySQLDatabasePoolConfiguration._defaultCollation) String collation,
46+
@Default('utf8_general_ci') //
47+
String collation,
5548

5649
/// Connection timeout.
57-
@Default(MySQLDatabasePoolConfiguration._defaultTimeout) Duration timeout,
50+
@Default(Duration(seconds: 10)) //
51+
Duration timeout,
5852

5953
/// Use SSL?
60-
@Default(MySQLDatabasePoolConfiguration._defaultSecure) bool secure,
54+
@Default(false) //
55+
bool secure,
6156
}) = _MySQLDatabasePoolConfiguration;
6257

6358
/// MySQL database endpoint based on this configuration.

Diff for: packages/foxcord_common/lib/src/configuration/database/postgres/connection.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ interface class PostgresDatabaseConnectionConfiguration
1717

1818
const factory PostgresDatabaseConnectionConfiguration({
1919
/// Application name of this connection.
20-
String? applicationName,
20+
@Default('foxcord') //
21+
String applicationName,
2122

2223
/// Timezone of this connection for date operations.
2324
String? timeZone,

Diff for: packages/foxcord_common/lib/src/configuration/database/postgres/endpoint.dart

+8-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import 'package:freezed_annotation/freezed_annotation.dart';
33
import 'package:postgres/postgres.dart';
44

55
part 'endpoint.freezed.dart';
6+
67
part 'endpoint.g.dart';
8+
79
part 'endpoint.mapper.dart';
810

911
/// Postgres endpoint configuration.
@@ -13,20 +15,20 @@ interface class PostgresDatabaseEndpointConfiguration
1315
with
1416
PostgresDatabaseEndpointConfigurationMappable,
1517
_$PostgresDatabaseEndpointConfiguration {
16-
/// Default postgres port.
17-
static const int _defaultPort = 5432;
18-
1918
const PostgresDatabaseEndpointConfiguration._();
2019

2120
const factory PostgresDatabaseEndpointConfiguration({
2221
/// Database host.
23-
required String host,
22+
@Default('localhost') //
23+
String host,
2424

2525
/// Database port.
26-
@Default(PostgresDatabaseEndpointConfiguration._defaultPort) int port,
26+
@Default(5432) //
27+
int port,
2728

2829
/// Database name.
29-
required String database,
30+
@Default('foxcord') //
31+
String database,
3032

3133
/// Database username.
3234
String? username,

Diff for: packages/foxcord_common/lib/src/configuration/mail/address.dart

+2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import 'package:freezed_annotation/freezed_annotation.dart';
33
import 'package:mailer/mailer.dart';
44

55
part 'address.freezed.dart';
6+
67
part 'address.g.dart';
8+
79
part 'address.mapper.dart';
810

911
/// Mailer address configuration.

Diff for: packages/foxcord_common/lib/src/configuration/mail/mail.dart

+2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import 'address.dart';
55
import 'provider.dart';
66

77
part 'mail.freezed.dart';
8+
89
part 'mail.g.dart';
10+
911
part 'mail.mapper.dart';
1012

1113
/// Mailer configuration.

Diff for: packages/foxcord_common/lib/src/configuration/mail/provider.dart

+77-35
Original file line numberDiff line numberDiff line change
@@ -3,85 +3,127 @@ import 'package:freezed_annotation/freezed_annotation.dart';
33
import 'package:mailer/smtp_server.dart';
44

55
part 'provider.freezed.dart';
6+
67
part 'provider.g.dart';
8+
79
part 'provider.mapper.dart';
810

911
/// Mailer provider configuration.
10-
@Freezed(unionKey: 'type', fallbackUnion: 'none')
12+
@Freezed(fallbackUnion: 'none')
1113
@MappableClass()
1214
interface class MailerProviderConfiguration
1315
with MailerProviderConfigurationMappable, _$MailerProviderConfiguration {
1416
const MailerProviderConfiguration._();
1517

16-
/// Default port for custom SMTP servers.
17-
static const _defaultSmtpPort = 587;
18-
19-
/// Ignore bad certificates on custom SMTP server.
20-
static const _defaultSmtpIgnoreBadCertificate = false;
21-
22-
/// Use ssl on custom SMTP server.
23-
static const _defaultSmtpSsl = false;
24-
25-
/// Allow insecure communication on custom SMTP server.
26-
static const _defaultSmtpAllowInsecure = false;
27-
28-
/// Default port of papercut SMTP server.
29-
static const _defaultPapercutPort = 25;
30-
31-
/// Default hostname of papercut SMTP server.
32-
static const _defaultPapercutHost = '127.0.0.1';
33-
3418
/// Disables mailer.
3519
const factory MailerProviderConfiguration.none() =
3620
_MailerProviderConfigurationNone;
3721

3822
/// Smtp mailer.
3923
const factory MailerProviderConfiguration.smtp({
40-
required String host,
41-
@Default(MailerProviderConfiguration._defaultSmtpPort) int port,
42-
@Default(MailerProviderConfiguration._defaultSmtpIgnoreBadCertificate)
24+
/// Host to use.
25+
@Default('localhost') //
26+
String host,
27+
28+
/// Port to use.
29+
@Default(587) //
30+
int port,
31+
32+
/// Ignore bad server SSL certificate.
33+
@Default(false) //
4334
bool ignoreBadCertificate,
44-
@Default(MailerProviderConfiguration._defaultSmtpSsl) bool ssl,
45-
@Default(MailerProviderConfiguration._defaultSmtpAllowInsecure)
35+
36+
/// Use SSL for communication with server.
37+
@Default(false) //
38+
bool ssl,
39+
40+
/// Allow insecure communication with server.
41+
@Default(false) //
4642
bool allowInsecure,
43+
44+
/// Username of mailing user.
4745
String? username,
46+
47+
/// Password of mailing user.
4848
String? password,
49+
50+
/// XOAuth2 of mailing user.
4951
String? xoauth2Token,
5052
}) = _MailerProviderConfigurationSmtp;
5153

5254
/// Gmail mailer provider.
5355
const factory MailerProviderConfiguration.gmail(
54-
String username, String password) = _MailerProviderConfigurationGmail;
56+
/// Username of mailing user.
57+
String username,
58+
59+
/// Password of mailing user.
60+
String password,
61+
) = _MailerProviderConfigurationGmail;
5562

5663
/// Outlook Hotmail mailer provider.
5764
const factory MailerProviderConfiguration.hotmail(
58-
String username, String password) = _MailerProviderConfigurationHotmail;
65+
/// Username of mailing user.
66+
String username,
67+
68+
/// Password of mailing user.
69+
String password,
70+
) = _MailerProviderConfigurationHotmail;
5971

6072
/// Mailgun mailer provider.
6173
const factory MailerProviderConfiguration.mailgun(
62-
String username, String password) = _MailerProviderConfigurationMailgun;
74+
/// Username of mailing user.
75+
String username,
76+
77+
/// Password of mailing user.
78+
String password,
79+
) = _MailerProviderConfigurationMailgun;
6380

6481
/// Papercut mailer provider.
65-
const factory MailerProviderConfiguration.papercut([
66-
@Default(MailerProviderConfiguration._defaultPapercutHost) String host,
67-
@Default(MailerProviderConfiguration._defaultPapercutPort) int port,
68-
]) = _MailerProviderConfigurationPapercut;
82+
const factory MailerProviderConfiguration.papercut({
83+
/// Host to use.
84+
@Default('localhost') //
85+
String host,
86+
87+
/// Port to use.
88+
@Default(25) //
89+
int port,
90+
}) = _MailerProviderConfigurationPapercut;
6991

7092
/// Tencent QQ mailer provider.
7193
const factory MailerProviderConfiguration.qq(
72-
String username, String password) = _MailerProviderConfigurationQQ;
94+
/// Username of mailing user.
95+
String username,
96+
97+
/// Password of mailing user.
98+
String password,
99+
) = _MailerProviderConfigurationQQ;
73100

74101
/// Yahoo mailer provider.
75102
const factory MailerProviderConfiguration.yahoo(
76-
String username, String password) = _MailerProviderConfigurationYahoo;
103+
/// Username of mailing user.
104+
String username,
105+
106+
/// Password of mailing user.
107+
String password,
108+
) = _MailerProviderConfigurationYahoo;
77109

78110
/// Yandex mailer provider
79111
const factory MailerProviderConfiguration.yandex(
80-
String username, String password) = _MailerProviderConfigurationYandex;
112+
/// Username of mailing user.
113+
String username,
114+
115+
/// Password of mailing user.
116+
String password,
117+
) = _MailerProviderConfigurationYandex;
81118

82119
/// Zoho mailer provider.
83120
const factory MailerProviderConfiguration.zoho(
84-
String username, String password) = _MailerProviderConfigurationZoho;
121+
/// Username of mailing user.
122+
String username,
123+
124+
/// Password of mailing user.
125+
String password,
126+
) = _MailerProviderConfigurationZoho;
85127

86128
/// Get mailer server endpoint based on this config.
87129
SmtpServer? get smtpServer => switch (this) {

0 commit comments

Comments
 (0)