mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-06-01 21:00:38 +00:00
refactor: use derive_builder for boilerplate builders (#116)
* refactor: remove boilerplate builder code with derive_builder macro * refactor: better build creation using Default::default() * refactor: resolve api change issues in benchmark code * refactor: address some review issues * refactor: address clippy issues * chore: doc and todo update * refactor: add builder for RegionDescriptor
This commit is contained in:
@@ -17,14 +17,15 @@ impl RegionDescBuilder {
|
||||
let key_builder = RowKeyDescriptorBuilder::new(
|
||||
ColumnDescriptorBuilder::new(2, TIMESTAMP_NAME, ConcreteDataType::int64_datatype())
|
||||
.is_nullable(false)
|
||||
.build(),
|
||||
.build()
|
||||
.unwrap(),
|
||||
);
|
||||
|
||||
Self {
|
||||
name: name.into(),
|
||||
last_column_id: 2,
|
||||
key_builder,
|
||||
default_cf_builder: ColumnFamilyDescriptorBuilder::new(),
|
||||
default_cf_builder: ColumnFamilyDescriptorBuilder::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +39,8 @@ impl RegionDescBuilder {
|
||||
RegionDescriptor {
|
||||
id: 0,
|
||||
name: self.name,
|
||||
row_key: self.key_builder.build(),
|
||||
default_cf: self.default_cf_builder.build(),
|
||||
row_key: self.key_builder.build().unwrap(),
|
||||
default_cf: self.default_cf_builder.build().unwrap(),
|
||||
extra_cfs: Vec::new(),
|
||||
}
|
||||
}
|
||||
@@ -54,5 +55,6 @@ impl RegionDescBuilder {
|
||||
ColumnDescriptorBuilder::new(self.alloc_column_id(), column_def.0, datatype)
|
||||
.is_nullable(column_def.2)
|
||||
.build()
|
||||
.unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,6 +316,7 @@ fn version_column_desc() -> ColumnDescriptor {
|
||||
)
|
||||
.is_nullable(false)
|
||||
.build()
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
// TODO(yingwen): Add tests for using invalid row_key/cf to build metadata.
|
||||
@@ -381,20 +382,26 @@ mod tests {
|
||||
fn new_metadata(enable_version_column: bool) -> RegionMetadata {
|
||||
let timestamp = ColumnDescriptorBuilder::new(2, "ts", ConcreteDataType::int64_datatype())
|
||||
.is_nullable(false)
|
||||
.build();
|
||||
.build()
|
||||
.unwrap();
|
||||
let row_key = RowKeyDescriptorBuilder::new(timestamp)
|
||||
.push_column(
|
||||
ColumnDescriptorBuilder::new(3, "k1", ConcreteDataType::int64_datatype())
|
||||
.is_nullable(false)
|
||||
.build(),
|
||||
.build()
|
||||
.unwrap(),
|
||||
)
|
||||
.enable_version_column(enable_version_column)
|
||||
.build();
|
||||
let cf = ColumnFamilyDescriptorBuilder::new()
|
||||
.build()
|
||||
.unwrap();
|
||||
let cf = ColumnFamilyDescriptorBuilder::default()
|
||||
.push_column(
|
||||
ColumnDescriptorBuilder::new(4, "v1", ConcreteDataType::int64_datatype()).build(),
|
||||
ColumnDescriptorBuilder::new(4, "v1", ConcreteDataType::int64_datatype())
|
||||
.build()
|
||||
.unwrap(),
|
||||
)
|
||||
.build();
|
||||
.build()
|
||||
.unwrap();
|
||||
RegionMetadataBuilder::new()
|
||||
.row_key(row_key)
|
||||
.unwrap()
|
||||
|
||||
@@ -24,7 +24,8 @@ impl RegionDescBuilder {
|
||||
ConcreteDataType::int64_datatype(),
|
||||
)
|
||||
.is_nullable(false)
|
||||
.build(),
|
||||
.build()
|
||||
.unwrap(),
|
||||
);
|
||||
|
||||
Self {
|
||||
@@ -32,7 +33,7 @@ impl RegionDescBuilder {
|
||||
name: name.into(),
|
||||
last_column_id: 2,
|
||||
key_builder,
|
||||
default_cf_builder: ColumnFamilyDescriptorBuilder::new(),
|
||||
default_cf_builder: ColumnFamilyDescriptorBuilder::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,8 +44,17 @@ impl RegionDescBuilder {
|
||||
|
||||
// This will reset the row key builder, so should be called before `push_key_column()`
|
||||
// and `enable_version_column()`, or just call after `new()`.
|
||||
//
|
||||
// NOTE(ning): it's now possible to change this function to:
|
||||
//
|
||||
// ```
|
||||
// self.key_builder.timestamp(self.new_column(column_def))
|
||||
// ```
|
||||
// to resolve the constraint above
|
||||
|
||||
pub fn timestamp(mut self, column_def: ColumnDef) -> Self {
|
||||
let builder = RowKeyDescriptorBuilder::new(self.new_column(column_def));
|
||||
|
||||
self.key_builder = builder;
|
||||
self
|
||||
}
|
||||
@@ -70,8 +80,8 @@ impl RegionDescBuilder {
|
||||
RegionDescriptor {
|
||||
id: self.id,
|
||||
name: self.name,
|
||||
row_key: self.key_builder.build(),
|
||||
default_cf: self.default_cf_builder.build(),
|
||||
row_key: self.key_builder.build().unwrap(),
|
||||
default_cf: self.default_cf_builder.build().unwrap(),
|
||||
extra_cfs: Vec::new(),
|
||||
}
|
||||
}
|
||||
@@ -86,5 +96,6 @@ impl RegionDescBuilder {
|
||||
ColumnDescriptorBuilder::new(self.alloc_column_id(), column_def.0, datatype)
|
||||
.is_nullable(column_def.2)
|
||||
.build()
|
||||
.unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user