Skip to content

Commit 2ffdbdd

Browse files
author
serverpod_cloud
committed
feat: 94abe013c758f0cb5bbfe23e644f7c0d391ee9d4
1 parent 52b4f11 commit 2ffdbdd

6 files changed

Lines changed: 147 additions & 19 deletions

File tree

ground_control_client/lib/src/protocol/domains/capsules/models/compute_size_option.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import 'package:serverpod_client/serverpod_client.dart' as _i1;
1515
enum ComputeSizeOption implements _i1.SerializableModel {
1616
small,
1717
medium,
18-
large;
18+
large,
19+
unknown;
1920

2021
static ComputeSizeOption fromJson(String name) {
2122
switch (name) {
@@ -25,10 +26,10 @@ enum ComputeSizeOption implements _i1.SerializableModel {
2526
return ComputeSizeOption.medium;
2627
case 'large':
2728
return ComputeSizeOption.large;
29+
case 'unknown':
30+
return ComputeSizeOption.unknown;
2831
default:
29-
throw ArgumentError(
30-
'Value "$name" cannot be converted to "ComputeSizeOption"',
31-
);
32+
return ComputeSizeOption.unknown;
3233
}
3334
}
3435

ground_control_client/lib/src/protocol/features/capsules/models/compute_info.dart

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// ignore_for_file: no_leading_underscores_for_library_prefixes
1313
import 'package:serverpod_client/serverpod_client.dart' as _i1;
14+
import '../../../domains/capsules/models/compute_size_option.dart' as _i2;
1415

1516
abstract class ComputeInfo implements _i1.SerializableModel {
1617
ComputeInfo._({
@@ -23,7 +24,7 @@ abstract class ComputeInfo implements _i1.SerializableModel {
2324

2425
factory ComputeInfo({
2526
required String cloudCapsuleId,
26-
required String size,
27+
required _i2.ComputeSizeOption size,
2728
required int minInstances,
2829
required int maxInstances,
2930
required int memoryMb,
@@ -32,7 +33,9 @@ abstract class ComputeInfo implements _i1.SerializableModel {
3233
factory ComputeInfo.fromJson(Map<String, dynamic> jsonSerialization) {
3334
return ComputeInfo(
3435
cloudCapsuleId: jsonSerialization['cloudCapsuleId'] as String,
35-
size: jsonSerialization['size'] as String,
36+
size: _i2.ComputeSizeOption.fromJson(
37+
(jsonSerialization['size'] as String),
38+
),
3639
minInstances: jsonSerialization['minInstances'] as int,
3740
maxInstances: jsonSerialization['maxInstances'] as int,
3841
memoryMb: jsonSerialization['memoryMb'] as int,
@@ -42,8 +45,9 @@ abstract class ComputeInfo implements _i1.SerializableModel {
4245
/// The globally unique identifier of the capsule.
4346
String cloudCapsuleId;
4447

45-
/// The size of the capsule compute. small, medium, large.
46-
String size;
48+
/// The size of the capsule compute. small, medium, large, or unknown.
49+
/// A value of unknown means the size could not be determined.
50+
_i2.ComputeSizeOption size;
4751

4852
/// The minimum number of instances the capsule can scale to.
4953
int minInstances;
@@ -59,7 +63,7 @@ abstract class ComputeInfo implements _i1.SerializableModel {
5963
@_i1.useResult
6064
ComputeInfo copyWith({
6165
String? cloudCapsuleId,
62-
String? size,
66+
_i2.ComputeSizeOption? size,
6367
int? minInstances,
6468
int? maxInstances,
6569
int? memoryMb,
@@ -69,7 +73,7 @@ abstract class ComputeInfo implements _i1.SerializableModel {
6973
return {
7074
'__className__': 'ComputeInfo',
7175
'cloudCapsuleId': cloudCapsuleId,
72-
'size': size,
76+
'size': size.toJson(),
7377
'minInstances': minInstances,
7478
'maxInstances': maxInstances,
7579
'memoryMb': memoryMb,
@@ -85,7 +89,7 @@ abstract class ComputeInfo implements _i1.SerializableModel {
8589
class _ComputeInfoImpl extends ComputeInfo {
8690
_ComputeInfoImpl({
8791
required String cloudCapsuleId,
88-
required String size,
92+
required _i2.ComputeSizeOption size,
8993
required int minInstances,
9094
required int maxInstances,
9195
required int memoryMb,
@@ -103,7 +107,7 @@ class _ComputeInfoImpl extends ComputeInfo {
103107
@override
104108
ComputeInfo copyWith({
105109
String? cloudCapsuleId,
106-
String? size,
110+
_i2.ComputeSizeOption? size,
107111
int? minInstances,
108112
int? maxInstances,
109113
int? memoryMb,

ground_control_client/lib/src/protocol/features/databases/models/database_info.dart

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// ignore_for_file: no_leading_underscores_for_library_prefixes
1313
import 'package:serverpod_client/serverpod_client.dart' as _i1;
14+
import '../../../features/databases/models/database_size.dart' as _i2;
1415

1516
abstract class DatabaseInfo implements _i1.SerializableModel {
1617
DatabaseInfo._({
@@ -25,7 +26,7 @@ abstract class DatabaseInfo implements _i1.SerializableModel {
2526

2627
factory DatabaseInfo({
2728
required String cloudCapsuleId,
28-
required String size,
29+
required _i2.DatabaseSizeOption size,
2930
double? minCu,
3031
double? maxCu,
3132
required int memoryMb,
@@ -36,7 +37,9 @@ abstract class DatabaseInfo implements _i1.SerializableModel {
3637
factory DatabaseInfo.fromJson(Map<String, dynamic> jsonSerialization) {
3738
return DatabaseInfo(
3839
cloudCapsuleId: jsonSerialization['cloudCapsuleId'] as String,
39-
size: jsonSerialization['size'] as String,
40+
size: _i2.DatabaseSizeOption.fromJson(
41+
(jsonSerialization['size'] as String),
42+
),
4043
minCu: (jsonSerialization['minCu'] as num?)?.toDouble(),
4144
maxCu: (jsonSerialization['maxCu'] as num?)?.toDouble(),
4245
memoryMb: jsonSerialization['memoryMb'] as int,
@@ -50,7 +53,7 @@ abstract class DatabaseInfo implements _i1.SerializableModel {
5053

5154
/// The size of the database: small, medium, large, largePlus, or unknown.
5255
/// A value of unknown means the size could not be determined.
53-
String size;
56+
_i2.DatabaseSizeOption size;
5457

5558
/// The minimum number of CPUs that the database can be scaled to.
5659
/// Null if the database size does not support scaling.
@@ -74,7 +77,7 @@ abstract class DatabaseInfo implements _i1.SerializableModel {
7477
@_i1.useResult
7578
DatabaseInfo copyWith({
7679
String? cloudCapsuleId,
77-
String? size,
80+
_i2.DatabaseSizeOption? size,
7881
double? minCu,
7982
double? maxCu,
8083
int? memoryMb,
@@ -86,7 +89,7 @@ abstract class DatabaseInfo implements _i1.SerializableModel {
8689
return {
8790
'__className__': 'DatabaseInfo',
8891
'cloudCapsuleId': cloudCapsuleId,
89-
'size': size,
92+
'size': size.toJson(),
9093
if (minCu != null) 'minCu': minCu,
9194
if (maxCu != null) 'maxCu': maxCu,
9295
'memoryMb': memoryMb,
@@ -106,7 +109,7 @@ class _Undefined {}
106109
class _DatabaseInfoImpl extends DatabaseInfo {
107110
_DatabaseInfoImpl({
108111
required String cloudCapsuleId,
109-
required String size,
112+
required _i2.DatabaseSizeOption size,
110113
double? minCu,
111114
double? maxCu,
112115
required int memoryMb,
@@ -128,7 +131,7 @@ class _DatabaseInfoImpl extends DatabaseInfo {
128131
@override
129132
DatabaseInfo copyWith({
130133
String? cloudCapsuleId,
131-
String? size,
134+
_i2.DatabaseSizeOption? size,
132135
Object? minCu = _Undefined,
133136
Object? maxCu = _Undefined,
134137
int? memoryMb,

ground_control_client/lib/src/test_tools/builders/builders.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export 'billing/payment_method_builder.dart';
55
export 'billing/payment_method_card_builder.dart';
66
export 'billing/payment_setup_intent_builder.dart';
77
export 'capsule_builder.dart';
8+
export 'compute_info_builder.dart';
9+
export 'database_info_builder.dart';
810
export 'deploy_attempt_builder.dart';
911
export 'role_builder.dart';
1012
export 'project_builder.dart';
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import 'package:ground_control_client/ground_control_client.dart';
2+
3+
class ComputeInfoBuilder {
4+
String _cloudCapsuleId;
5+
ComputeSizeOption _size;
6+
int _minInstances;
7+
int _maxInstances;
8+
int _memoryMb;
9+
10+
ComputeInfoBuilder()
11+
: _cloudCapsuleId = 'test',
12+
_size = ComputeSizeOption.small,
13+
_minInstances = 1,
14+
_maxInstances = 2,
15+
_memoryMb = 512;
16+
17+
ComputeInfoBuilder withCloudCapsuleId(final String cloudCapsuleId) {
18+
_cloudCapsuleId = cloudCapsuleId;
19+
return this;
20+
}
21+
22+
ComputeInfoBuilder withSize(final ComputeSizeOption size) {
23+
_size = size;
24+
return this;
25+
}
26+
27+
ComputeInfoBuilder withMinInstances(final int minInstances) {
28+
_minInstances = minInstances;
29+
return this;
30+
}
31+
32+
ComputeInfoBuilder withMaxInstances(final int maxInstances) {
33+
_maxInstances = maxInstances;
34+
return this;
35+
}
36+
37+
ComputeInfoBuilder withMemoryMb(final int memoryMb) {
38+
_memoryMb = memoryMb;
39+
return this;
40+
}
41+
42+
ComputeInfo build() {
43+
return ComputeInfo(
44+
cloudCapsuleId: _cloudCapsuleId,
45+
size: _size,
46+
minInstances: _minInstances,
47+
maxInstances: _maxInstances,
48+
memoryMb: _memoryMb,
49+
);
50+
}
51+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import 'package:ground_control_client/ground_control_client.dart';
2+
3+
class DatabaseInfoBuilder {
4+
String _cloudCapsuleId;
5+
DatabaseSizeOption _size;
6+
double? _minCu;
7+
double? _maxCu;
8+
int _memoryMb;
9+
int? _storageLimitGB;
10+
int? _computeHoursLimit;
11+
12+
DatabaseInfoBuilder()
13+
: _cloudCapsuleId = 'test',
14+
_size = DatabaseSizeOption.small,
15+
_minCu = 1,
16+
_maxCu = 2,
17+
_memoryMb = 512,
18+
_storageLimitGB = 2,
19+
_computeHoursLimit = 100;
20+
21+
DatabaseInfoBuilder withCloudCapsuleId(final String cloudCapsuleId) {
22+
_cloudCapsuleId = cloudCapsuleId;
23+
return this;
24+
}
25+
26+
DatabaseInfoBuilder withSize(final DatabaseSizeOption size) {
27+
_size = size;
28+
return this;
29+
}
30+
31+
DatabaseInfoBuilder withMinCu(final double? minCu) {
32+
_minCu = minCu;
33+
return this;
34+
}
35+
36+
DatabaseInfoBuilder withMaxCu(final double? maxCu) {
37+
_maxCu = maxCu;
38+
return this;
39+
}
40+
41+
DatabaseInfoBuilder withMemoryMb(final int memoryMb) {
42+
_memoryMb = memoryMb;
43+
return this;
44+
}
45+
46+
DatabaseInfoBuilder withStorageLimitGB(final int? storageLimitGB) {
47+
_storageLimitGB = storageLimitGB;
48+
return this;
49+
}
50+
51+
DatabaseInfoBuilder withComputeHoursLimit(final int? computeHoursLimit) {
52+
_computeHoursLimit = computeHoursLimit;
53+
return this;
54+
}
55+
56+
DatabaseInfo build() {
57+
return DatabaseInfo(
58+
cloudCapsuleId: _cloudCapsuleId,
59+
size: _size,
60+
minCu: _minCu,
61+
maxCu: _maxCu,
62+
memoryMb: _memoryMb,
63+
storageLimitGB: _storageLimitGB,
64+
computeHoursLimit: _computeHoursLimit,
65+
);
66+
}
67+
}

0 commit comments

Comments
 (0)