mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-10 22:58:18 +00:00
feat(backend-api): Add allPackageReleases query
This commit is contained in:
@@ -417,6 +417,7 @@ type PackageVersion implements Node & PackageReleaseInterface & PackageInstance
|
||||
deletedAt: DateTime
|
||||
package: Package!
|
||||
webc: WebcImage
|
||||
webcV3: WebcImage
|
||||
|
||||
"""List of direct dependencies of this package version"""
|
||||
dependencies(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection!
|
||||
@@ -457,7 +458,7 @@ type PackageVersion implements Node & PackageReleaseInterface & PackageInstance
|
||||
piritaFile: String @deprecated(reason: "Please use distribution.piritaDownloadUrl instead.")
|
||||
piritaFileSize: Int @deprecated(reason: "Please use distribution.piritaSize instead.")
|
||||
pirita256hash: String @deprecated(reason: "Please use distribution.piritaSha256Hash instead.")
|
||||
distribution: PackageDistribution!
|
||||
distribution(version: WebcVersion): PackageDistribution!
|
||||
filesystem: [PackageVersionFilesystem]!
|
||||
isLastVersion: Boolean!
|
||||
witFile: String
|
||||
@@ -1040,6 +1041,11 @@ type PackageDistribution {
|
||||
webcSha256Hash: String
|
||||
}
|
||||
|
||||
enum WebcVersion {
|
||||
V2
|
||||
V3
|
||||
}
|
||||
|
||||
type PackageVersionFilesystem {
|
||||
wasm: String!
|
||||
host: String!
|
||||
@@ -1218,7 +1224,7 @@ type PackageWebcEdge {
|
||||
cursor: String!
|
||||
}
|
||||
|
||||
type PackageWebc implements Node & PackageReleaseInterface {
|
||||
type PackageWebc implements Node & PackageReleaseInterface & PackageInstance {
|
||||
"""The ID of the object"""
|
||||
id: ID!
|
||||
createdAt: DateTime!
|
||||
@@ -2284,7 +2290,7 @@ type Query {
|
||||
getCommands(names: [String!]!): [Command]
|
||||
getCollections(before: String, after: String, first: Int, last: Int): CollectionConnection
|
||||
getSignedUrlForPackageUpload(name: String!, version: String = "latest", expiresAfterSeconds: Int = 60): SignedUrl
|
||||
getPackageHash(hash: String!): PackageWebc
|
||||
getPackageHash(name: String, hash: String!): PackageWebc
|
||||
getPackageRelease(hash: String!): PackageWebc
|
||||
categories(offset: Int, before: String, after: String, first: Int, last: Int): CategoryConnection!
|
||||
blogposts(tags: [String!], before: String, after: String, first: Int, last: Int): BlogPostConnection!
|
||||
|
||||
@@ -628,6 +628,16 @@ pub async fn get_package_release(
|
||||
.map(|x| x.get_package_release)
|
||||
}
|
||||
|
||||
pub async fn get_package_releases(
|
||||
client: &WasmerClient,
|
||||
vars: types::AllPackageReleasesVars,
|
||||
) -> Result<types::PackageWebcConnection, anyhow::Error> {
|
||||
let res = client
|
||||
.run_graphql(types::GetAllPackageReleases::build(vars))
|
||||
.await?;
|
||||
Ok(res.all_package_releases)
|
||||
}
|
||||
|
||||
/// Retrieve all versions of a package as a stream that auto-paginates.
|
||||
pub fn get_package_versions_stream(
|
||||
client: &WasmerClient,
|
||||
|
||||
@@ -187,6 +187,47 @@ mod queries {
|
||||
pub all_package_versions: PackageVersionConnection,
|
||||
}
|
||||
|
||||
#[derive(cynic::QueryVariables, Debug, Clone, Default)]
|
||||
pub struct AllPackageReleasesVars {
|
||||
pub offset: Option<i32>,
|
||||
pub before: Option<String>,
|
||||
pub after: Option<String>,
|
||||
pub first: Option<i32>,
|
||||
pub last: Option<i32>,
|
||||
|
||||
pub created_after: Option<DateTime>,
|
||||
pub updated_after: Option<DateTime>,
|
||||
pub sort_by: Option<PackageVersionSortBy>,
|
||||
}
|
||||
|
||||
#[derive(cynic::QueryFragment, Debug)]
|
||||
#[cynic(graphql_type = "Query", variables = "AllPackageReleasesVars")]
|
||||
pub struct GetAllPackageReleases {
|
||||
pub all_package_releases: PackageWebcConnection,
|
||||
}
|
||||
|
||||
impl GetAllPackageReleases {
|
||||
pub fn into_packages(self) -> Vec<PackageWebc> {
|
||||
self.all_package_releases
|
||||
.edges
|
||||
.into_iter()
|
||||
.filter_map(|x| x)
|
||||
.filter_map(|x| x.node)
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(cynic::QueryFragment, Debug)]
|
||||
pub struct PackageWebcConnection {
|
||||
pub page_info: PageInfo,
|
||||
pub edges: Vec<Option<PackageWebcEdge>>,
|
||||
}
|
||||
|
||||
#[derive(cynic::QueryFragment, Debug)]
|
||||
pub struct PackageWebcEdge {
|
||||
pub node: Option<PackageWebc>,
|
||||
}
|
||||
|
||||
#[derive(cynic::QueryFragment, Debug)]
|
||||
pub struct PackageVersionConnection {
|
||||
pub page_info: PageInfo,
|
||||
|
||||
Reference in New Issue
Block a user