|
1 | 1 | use std::collections::BTreeMap; |
2 | 2 |
|
| 3 | +use bon::Builder; |
3 | 4 | use chrono::NaiveDateTime; |
4 | 5 | use crates_io_index::features::FeaturesMap; |
5 | | -use derive_builder::Builder; |
6 | 6 | use diesel::prelude::*; |
7 | 7 | use serde::Deserialize; |
8 | 8 |
|
@@ -80,58 +80,26 @@ impl Version { |
80 | 80 | #[derive(Insertable, Debug, Builder)] |
81 | 81 | #[diesel(table_name = versions, check_for_backend(diesel::pg::Pg))] |
82 | 82 | pub struct NewVersion<'a> { |
| 83 | + #[builder(start_fn)] |
83 | 84 | crate_id: i32, |
| 85 | + #[builder(start_fn)] |
84 | 86 | num: &'a str, |
85 | | - #[builder(default)] |
86 | 87 | created_at: Option<&'a NaiveDateTime>, |
87 | | - #[builder(default, setter(strip_option))] |
88 | 88 | yanked: Option<bool>, |
89 | | - #[builder( |
90 | | - default = "serde_json::Value::Object(Default::default())", |
91 | | - setter(custom) |
92 | | - )] |
| 89 | + #[builder(default = serde_json::Value::Object(Default::default()))] |
93 | 90 | features: serde_json::Value, |
94 | | - #[builder(default)] |
95 | 91 | license: Option<&'a str>, |
96 | | - #[builder(default, setter(name = "size"))] |
| 92 | + #[builder(default, name = "size")] |
97 | 93 | crate_size: i32, |
98 | 94 | published_by: i32, |
99 | 95 | checksum: &'a str, |
100 | | - #[builder(default)] |
101 | 96 | links: Option<&'a str>, |
102 | | - #[builder(default)] |
103 | 97 | rust_version: Option<&'a str>, |
104 | | - #[builder(default, setter(strip_option))] |
105 | 98 | pub has_lib: Option<bool>, |
106 | | - #[builder(default, setter(strip_option))] |
107 | 99 | pub bin_names: Option<&'a [&'a str]>, |
108 | 100 | } |
109 | 101 |
|
110 | | -impl NewVersionBuilder<'_> { |
111 | | - pub fn features( |
112 | | - &mut self, |
113 | | - features: &BTreeMap<String, Vec<String>>, |
114 | | - ) -> serde_json::Result<&mut Self> { |
115 | | - self.features = Some(serde_json::to_value(features)?); |
116 | | - Ok(self) |
117 | | - } |
118 | | - |
119 | | - /// Set the `checksum` field to a basic dummy value. |
120 | | - pub fn dummy_checksum(&mut self) -> &mut Self { |
121 | | - const DUMMY_CHECKSUM: &str = |
122 | | - "0000000000000000000000000000000000000000000000000000000000000000"; |
123 | | - |
124 | | - self.checksum(DUMMY_CHECKSUM) |
125 | | - } |
126 | | -} |
127 | | - |
128 | 102 | impl NewVersion<'_> { |
129 | | - pub fn builder(crate_id: i32, version: &str) -> NewVersionBuilder<'_> { |
130 | | - let mut builder = NewVersionBuilder::default(); |
131 | | - builder.crate_id(crate_id).num(version); |
132 | | - builder |
133 | | - } |
134 | | - |
135 | 103 | pub fn save(&self, conn: &mut impl Conn, published_by_email: &str) -> AppResult<Version> { |
136 | 104 | use diesel::dsl::exists; |
137 | 105 | use diesel::{insert_into, select}; |
|
0 commit comments