in core/src/services/d1/backend.rs [141:203]
fn build(self) -> Result<impl Access> {
let mut authorization = None;
let config = self.config;
if let Some(token) = config.token {
authorization = Some(format_authorization_by_bearer(&token)?)
}
let Some(account_id) = config.account_id else {
return Err(Error::new(
ErrorKind::ConfigInvalid,
"account_id is required",
));
};
let Some(database_id) = config.database_id.clone() else {
return Err(Error::new(
ErrorKind::ConfigInvalid,
"database_id is required",
));
};
let client = if let Some(client) = self.http_client {
client
} else {
HttpClient::new().map_err(|err| {
err.with_operation("Builder::build")
.with_context("service", Scheme::D1)
})?
};
let Some(table) = config.table.clone() else {
return Err(Error::new(ErrorKind::ConfigInvalid, "table is required"));
};
let key_field = config
.key_field
.clone()
.unwrap_or_else(|| "key".to_string());
let value_field = config
.value_field
.clone()
.unwrap_or_else(|| "value".to_string());
let root = normalize_root(
config
.root
.clone()
.unwrap_or_else(|| "/".to_string())
.as_str(),
);
Ok(D1Backend::new(Adapter {
authorization,
account_id,
database_id,
client,
table,
key_field,
value_field,
})
.with_normalized_root(root))
}