diff --git a/database/src/ensembles.rs b/database/src/ensembles.rs index 7cfc6bf..350f3eb 100644 --- a/database/src/ensembles.rs +++ b/database/src/ensembles.rs @@ -64,4 +64,13 @@ impl Database { let ensembles = ensembles::table.load::(&self.connection)?; Ok(ensembles) } + + /// Get recently used ensembles. + pub fn get_recent_ensembles(&self) -> Result> { + let ensembles = ensembles::table + .order(ensembles::last_used.desc()) + .load::(&self.connection)?; + + Ok(ensembles) + } } diff --git a/database/src/instruments.rs b/database/src/instruments.rs index 2b5dcff..76cf31c 100644 --- a/database/src/instruments.rs +++ b/database/src/instruments.rs @@ -67,4 +67,13 @@ impl Database { Ok(instruments) } + + /// Get recently used instruments. + pub fn get_recent_instruments(&self) -> Result> { + let instruments = instruments::table + .order(instruments::last_used.desc()) + .load::(&self.connection)?; + + Ok(instruments) + } } diff --git a/database/src/persons.rs b/database/src/persons.rs index 4df8a0b..3fffb24 100644 --- a/database/src/persons.rs +++ b/database/src/persons.rs @@ -77,4 +77,13 @@ impl Database { Ok(persons) } + + /// Get recently used persons. + pub fn get_recent_persons(&self) -> Result> { + let persons = persons::table + .order(persons::last_used.desc()) + .load::(&self.connection)?; + + Ok(persons) + } } diff --git a/musicus/src/selectors/ensemble.rs b/musicus/src/selectors/ensemble.rs index 5a3b712..6d501e0 100644 --- a/musicus/src/selectors/ensemble.rs +++ b/musicus/src/selectors/ensemble.rs @@ -63,7 +63,7 @@ impl Screen<(), Ensemble> for EnsembleSelector { .set_filter(|search, ensemble| ensemble.name.to_lowercase().contains(search)); this.selector - .set_items(this.handle.backend.db().get_ensembles().unwrap()); + .set_items(this.handle.backend.db().get_recent_ensembles().unwrap()); this } diff --git a/musicus/src/selectors/instrument.rs b/musicus/src/selectors/instrument.rs index b19f9e6..0b38a5e 100644 --- a/musicus/src/selectors/instrument.rs +++ b/musicus/src/selectors/instrument.rs @@ -63,7 +63,7 @@ impl Screen<(), Instrument> for InstrumentSelector { .set_filter(|search, instrument| instrument.name.to_lowercase().contains(search)); this.selector - .set_items(this.handle.backend.db().get_instruments().unwrap()); + .set_items(this.handle.backend.db().get_recent_instruments().unwrap()); this } diff --git a/musicus/src/selectors/medium.rs b/musicus/src/selectors/medium.rs index d2c6258..5d2ef4d 100644 --- a/musicus/src/selectors/medium.rs +++ b/musicus/src/selectors/medium.rs @@ -55,8 +55,8 @@ impl Screen<(), Medium> for MediumSelector { let mut poes = Vec::new(); - let persons = this.handle.backend.db().get_persons().unwrap(); - let ensembles = this.handle.backend.db().get_ensembles().unwrap(); + let persons = this.handle.backend.db().get_recent_persons().unwrap(); + let ensembles = this.handle.backend.db().get_recent_ensembles().unwrap(); for person in persons { poes.push(PersonOrEnsemble::Person(person)); diff --git a/musicus/src/selectors/person.rs b/musicus/src/selectors/person.rs index 6a7236a..168fe1e 100644 --- a/musicus/src/selectors/person.rs +++ b/musicus/src/selectors/person.rs @@ -63,7 +63,7 @@ impl Screen<(), Person> for PersonSelector { .set_filter(|search, person| person.name_fl().to_lowercase().contains(search)); this.selector - .set_items(this.handle.backend.db().get_persons().unwrap()); + .set_items(this.handle.backend.db().get_recent_persons().unwrap()); this } diff --git a/musicus/src/selectors/recording.rs b/musicus/src/selectors/recording.rs index 698b689..a03ea23 100644 --- a/musicus/src/selectors/recording.rs +++ b/musicus/src/selectors/recording.rs @@ -81,7 +81,7 @@ impl Screen<(), Recording> for RecordingSelector { .set_filter(|search, person| person.name_fl().to_lowercase().contains(search)); this.selector - .set_items(this.handle.backend.db().get_persons().unwrap()); + .set_items(this.handle.backend.db().get_recent_persons().unwrap()); this } diff --git a/musicus/src/selectors/work.rs b/musicus/src/selectors/work.rs index 74f0602..30e3662 100644 --- a/musicus/src/selectors/work.rs +++ b/musicus/src/selectors/work.rs @@ -71,7 +71,7 @@ impl Screen<(), Work> for WorkSelector { .set_filter(|search, person| person.name_fl().to_lowercase().contains(search)); this.selector - .set_items(this.handle.backend.db().get_persons().unwrap()); + .set_items(this.handle.backend.db().get_recent_persons().unwrap()); this }