Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Commit a71fef3

Browse files
committed
add ratings to api
1 parent 694fadf commit a71fef3

7 files changed

Lines changed: 71 additions & 57 deletions

File tree

‎package.json‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
{
22
"name": "api",
3-
"version": "1.4.3",
3+
"version": "1.5.0",
44
"scripts": {
55
"build": "rm -rf lib && esbuild `find src \\( -name '*.ts' -o -name '*.tsx' \\)` --platform='node' --sourcemap --ignore-annotations --format='cjs' --target='es2022' --outdir='lib' && esbuild src/index.ts --platform='node' --sourcemap --ignore-annotations --format='cjs' --target='es2022' --outdir='lib' --banner:js='require(\"module-alias\").addAlias(\"@\", __dirname);'",
66
"kit": "drizzle-kit",
77
"lint": "tsc",
88
"dev": "pnpm build && cd lib && NODE_ENV=development node --enable-source-maps index && cd .."
99
},
1010
"keywords": [],
11-
"author": "",
12-
"license": "ISC",
11+
"author": "0x7d8",
12+
"license": "MIT",
1313
"dependencies": {
1414
"@rjweb/runtime-node": "^1.1.1",
1515
"@rjweb/sentry": "^2.1.5",
1616
"@rjweb/utils": "^1.12.27",
17-
"@sentry/node": "^8.48.0",
17+
"@sentry/node": "^8.50.0",
1818
"ansi-colors": "^4.1.3",
19-
"drizzle-kit": "^0.28.1",
20-
"drizzle-orm": "^0.36.4",
19+
"drizzle-orm": "^0.38.4",
20+
"drizzle-kit": "^0.30.2",
2121
"ioredis": "^5.4.2",
2222
"module-alias": "^2.2.3",
2323
"node-cron": "^3.0.3",
@@ -26,7 +26,7 @@
2626
"zod": "^3.24.1"
2727
},
2828
"devDependencies": {
29-
"@types/node": "^22.10.6",
29+
"@types/node": "^22.10.7",
3030
"@types/node-cron": "^3.0.11",
3131
"@types/pg": "^8.11.10",
3232
"esbuild": "^0.24.2",

‎pnpm-lock.yaml‎

Lines changed: 40 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/api/index.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ server.schema('Extension', {
9898
properties: {
9999
url: { type: 'string', format: 'uri' },
100100
price: { type: 'number' },
101-
currency: { type: 'string', enum: Array.from(database.schema.currency) }
102-
}, required: ['url', 'price', 'currency']
101+
currency: { type: 'string', enum: Array.from(database.schema.currency) },
102+
reviews: { type: 'integer' },
103+
rating: { type: 'number' }
104+
}, required: ['url', 'price', 'currency', 'reviews']
103105
}
104106
},
105107

‎src/crontabs/update-prices.ts‎

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ export default new Crontab()
2828
])
2929

3030
for (const extension of extensions) {
31-
if (!Object.keys(extension.platforms).filter((platform) => platform !== 'GITHUB').length) continue
32-
3331
logger()
3432
.text('Updating Extension Prices of')
3533
.text(extension.name, (c) => c.cyan)
@@ -44,7 +42,9 @@ export default new Crontab()
4442
platforms.SOURCEXCHANGE = {
4543
url: extension.platforms.SOURCEXCHANGE.url,
4644
price: product.price,
47-
currency: product.currency
45+
currency: product.currency,
46+
reviews: product.review_count,
47+
rating: product.rating_avg || undefined
4848
}
4949
}
5050
}
@@ -56,16 +56,24 @@ export default new Crontab()
5656
platforms.BUILTBYBIT = {
5757
url: extension.platforms.BUILTBYBIT.url,
5858
price: product.price,
59-
currency: product.currency
59+
currency: product.currency,
60+
reviews: product.review_count,
61+
rating: product.review_average || undefined
6062
}
6163
}
6264
}
6365

66+
if (extension.platforms.GITHUB && (!platforms.GITHUB.price || !platforms.GITHUB.currency || !platforms.GITHUB.reviews)) {
67+
platforms.GITHUB = Object.assign(extension.platforms.GITHUB, {
68+
price: 0,
69+
currency: 'USD',
70+
reviews: 0
71+
})
72+
}
73+
6474
if (JSON.stringify(platforms) !== JSON.stringify(extension.platforms)) {
6575
await ctx.database.write.update(ctx.database.schema.extensions)
66-
.set({
67-
platforms
68-
})
76+
.set({ platforms })
6977
.where(eq(ctx.database.schema.extensions.id, extension.id))
7078
}
7179

‎src/globals/builtbybit.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { Currency } from "@/schema"
44
export type BBBProduct = {
55
price: number
66
currency: Currency
7+
review_average: number | null
8+
review_count: number
79
}
810

911
/**

‎src/globals/sourcexchange.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export type SXCProduct = {
55
price: number
66
currency: Currency
77
url: string
8+
rating_avg: number | null
9+
review_count: number
810
}
911

1012
/**

‎src/schema.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export const extensions = pgTable('extensions', {
8080
identifier: varchar('identifier', { length: 63 }).notNull(),
8181
summary: varchar('summary', { length: 255 }).notNull(),
8282

83-
platforms: jsonb('platforms').notNull().$type<Record<Platform, { price: number, currency: Currency, url: string }>>(),
83+
platforms: jsonb('platforms').notNull().$type<Record<Platform, { price: number, currency: Currency, url: string, reviews: number, rating?: number }>>(),
8484
keywords: varchar('keywords', { length: 255 }).array().notNull().default([]),
8585
banner: varchar('banner', { length: 255 }).notNull(),
8686

0 commit comments

Comments
 (0)