MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / run

Function run

chirpstack/src/cmd/migrate_device_profile_templates.rs:50–166  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

48}
49
50pub async fn run() -> Result<()> {
51 storage::setup().await?;
52
53 info!("Migrating device-profile templates to device profiles");
54
55 info!("Querying vendors");
56 let vendors: Vec<String> = device_profile_template::table
57 .select(device_profile_template::vendor)
58 .group_by(device_profile_template::vendor)
59 .load(&mut get_async_db_conn().await?)
60 .await?;
61
62 for vendor in &vendors {
63 info!(vendor = %vendor, "Creating vendor");
64
65 let v = device_profile::upsert_vendor(device_profile::Vendor {
66 name: vendor.clone(),
67 ..Default::default()
68 })
69 .await?;
70
71 info!(vendor = %vendor, "Querying vendor devices");
72 let devices: Vec<String> = device_profile_template::table
73 .select(device_profile_template::name)
74 .filter(device_profile_template::vendor.eq(vendor))
75 .group_by(device_profile_template::name)
76 .load(&mut get_async_db_conn().await?)
77 .await?;
78
79 for device in &devices {
80 info!(vendor = %vendor, device = %device, "Creating device");
81
82 let d = device_profile::upsert_device(device_profile::Device {
83 vendor_id: v.id,
84 name: device.clone(),
85 ..Default::default()
86 })
87 .await?;
88
89 info!(vendor = %vendor, device = %device, "Querying device profiles");
90 let dps: Vec<DeviceProfileTemplate> = device_profile_template::table
91 .filter(
92 device_profile_template::vendor
93 .eq(vendor)
94 .and(device_profile_template::name.eq(device)),
95 )
96 .load(&mut get_async_db_conn().await?)
97 .await?;
98
99 for dp in &dps {
100 info!(vendor = %vendor, device = %device, firmware = %dp.firmware, region = %dp.region, "Creating device profile");
101
102 let _ = device_profile::create(device_profile::DeviceProfile {
103 name: dp.name.clone(),
104 region: dp.region,
105 mac_version: dp.mac_version,
106 reg_params_revision: dp.reg_params_revision,
107 adr_algorithm_id: "default".into(),

Callers

nothing calls this directly

Calls 6

upsert_vendorFunction · 0.85
upsert_deviceFunction · 0.85
setupFunction · 0.50
get_async_db_connFunction · 0.50
createFunction · 0.50
intoMethod · 0.45

Tested by

no test coverage detected