diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-15 01:07:54 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-15 19:51:17 +0900 |
| commit | f78ade50822cee315c73b73f40f1a923a2bfd6ac (patch) | |
| tree | a5fbc0aa34fb94fae68754278155a471e841c2a1 /crates/shirabe/src/repository | |
| parent | f419c7d4e2c500f980e9e44ac2f1eaa033be0314 (diff) | |
| download | php-shirabe-f78ade50822cee315c73b73f40f1a923a2bfd6ac.tar.gz php-shirabe-f78ade50822cee315c73b73f40f1a923a2bfd6ac.tar.zst php-shirabe-f78ade50822cee315c73b73f40f1a923a2bfd6ac.zip | |
feat(port): port RepositoryInterface.php
Diffstat (limited to 'crates/shirabe/src/repository')
| -rw-r--r-- | crates/shirabe/src/repository/repository_interface.rs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/crates/shirabe/src/repository/repository_interface.rs b/crates/shirabe/src/repository/repository_interface.rs index 6e60721..981ee77 100644 --- a/crates/shirabe/src/repository/repository_interface.rs +++ b/crates/shirabe/src/repository/repository_interface.rs @@ -1 +1,63 @@ //! ref: composer/src/Composer/Repository/RepositoryInterface.php + +use indexmap::IndexMap; +use shirabe_php_shim::Countable; +use shirabe_semver::constraint::constraint_interface::ConstraintInterface; +use crate::package::base_package::BasePackage; +use crate::package::package_interface::PackageInterface; + +pub enum FindPackageConstraint { + String(String), + Constraint(Box<dyn ConstraintInterface>), +} + +pub struct LoadPackagesResult { + pub names_found: Vec<String>, + pub packages: Vec<Box<BasePackage>>, +} + +pub enum AbandonedInfo { + Replacement(String), + Abandoned, +} + +pub struct SearchResult { + pub name: String, + pub description: Option<String>, + pub abandoned: Option<AbandonedInfo>, + pub url: Option<String>, +} + +pub struct ProviderInfo { + pub name: String, + pub description: Option<String>, + pub r#type: String, +} + +pub trait RepositoryInterface: Countable { + const SEARCH_FULLTEXT: i64 = 0; + const SEARCH_NAME: i64 = 1; + const SEARCH_VENDOR: i64 = 2; + + fn has_package(&self, package: &dyn PackageInterface) -> bool; + + fn find_package(&self, name: String, constraint: FindPackageConstraint) -> Option<Box<BasePackage>>; + + fn find_packages(&self, name: String, constraint: Option<FindPackageConstraint>) -> Vec<Box<BasePackage>>; + + fn get_packages(&self) -> Vec<Box<BasePackage>>; + + fn load_packages( + &self, + package_name_map: IndexMap<String, Option<Box<dyn ConstraintInterface>>>, + acceptable_stabilities: IndexMap<String, i64>, + stability_flags: IndexMap<String, i64>, + already_loaded: IndexMap<String, IndexMap<String, Box<dyn PackageInterface>>>, + ) -> LoadPackagesResult; + + fn search(&self, query: String, mode: i64, r#type: Option<String>) -> Vec<SearchResult>; + + fn get_providers(&self, package_name: String) -> IndexMap<String, ProviderInfo>; + + fn get_repo_name(&self) -> String; +} |
