diff --git a/apps/api/database-client.ts b/apps/api/database-client.ts index d797070..ee37f30 100644 --- a/apps/api/database-client.ts +++ b/apps/api/database-client.ts @@ -3,6 +3,6 @@ import { Package } from './package.js' export interface DatabaseClient { connect: () => Promise disconnect: () => Promise - fetch: (source: string, identifier: string) => Promise + fetch: (source: string, identifier: string) => Promise search: (q: string, perPage: number, page: number, sort: 'hotness' | 'updated', order: 'asc' | 'desc') => Promise<{ packages: Package[], pageCount: number }> } diff --git a/apps/api/redis-client.ts b/apps/api/redis-client.ts index e531b03..0cb237d 100644 --- a/apps/api/redis-client.ts +++ b/apps/api/redis-client.ts @@ -48,12 +48,12 @@ export class RedisClient implements DatabaseClient { await this.client.quit() } - async fetch (identifier: string): Promise { + async fetch (identifier: string): Promise { const entity = await this.repository.fetch(identifier) - // Check if the entity is an empty entity - if (entity.identifier === undefined) { - return undefined + // Check if the entity is empty + if (Object.keys(entity).length === 0) { + return null } return entity as Package diff --git a/apps/api/routes/packages/[identifier]/index.ts b/apps/api/routes/packages/[identifier]/index.ts index 1d5bb60..7cee776 100644 --- a/apps/api/routes/packages/[identifier]/index.ts +++ b/apps/api/routes/packages/[identifier]/index.ts @@ -11,7 +11,7 @@ router.get('/', (async (req, res, next) => { try { const packageData = await redisClient.fetch(identifier) - if (packageData === undefined) { + if (packageData === null) { throw new createHttpError.NotFound('package not found') } diff --git a/apps/bot/endstone-python-fetcher.ts b/apps/bot/endstone-python-fetcher.ts index a29c88b..86eb7ef 100644 --- a/apps/bot/endstone-python-fetcher.ts +++ b/apps/bot/endstone-python-fetcher.ts @@ -12,7 +12,7 @@ export class EndstonePythonFetcher extends GitHubFetcher { for await (const repo of this.searchForRepositories(query)) { try { - const packageInfo = await this.fetchPythonPackage(repo) + const packageInfo = await this.fetchPackage(repo) yield packageInfo } catch (error) { @@ -21,7 +21,7 @@ export class EndstonePythonFetcher extends GitHubFetcher { } } - private async fetchPythonPackage (repo: RepositoryDescriptor): Promise { + private async fetchPackage (repo: RepositoryDescriptor): Promise { consola.debug(`Fetching Endstone Python package github.com/${repo.owner}/${repo.repo}`) const [repository, repositoryContributors, repositoryVersions, pyprojectMetadata] = await Promise.all([ @@ -45,7 +45,7 @@ export class EndstonePythonFetcher extends GitHubFetcher { packageManager: 'pip' })) - if (pypiPackageMetadata !== undefined) { + if (pypiPackageMetadata !== null) { const pypiVersionStrings = Object.keys(pypiPackageMetadata.releases).filter(version => pypiPackageMetadata.releases[version].length > 0) const pypiVersions = pypiVersionStrings.map(version => ({ @@ -92,11 +92,11 @@ export class EndstonePythonFetcher extends GitHubFetcher { return toml.parse(data) as PythonProjectMetadata } - private async fetchPypiPackageMetadata (name: string): Promise { + private async fetchPypiPackageMetadata (name: string): Promise { const url = `https://pypi.org/pypi/${name}/json` const response = await fetch(url) if (!response.ok) { - return undefined + return null } return await response.json() as PypiPackageMetadata