Skip to content

Commit e952945

Browse files
committed
Add new features
1 parent 228f364 commit e952945

File tree

6 files changed

+51
-9
lines changed

6 files changed

+51
-9
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ There is a config service that is managed from the database, so see `schema.pris
4040
- `prisma:generate`: Generate the prisma client.
4141
- `prisma:push`: Push the prisma schema to the database.
4242
- `prisma:pull`: Pull the prisma schema from the database.
43+
- `prisma:seed`: Seed the database. IT OVERRIDE ALL SETTINGS!
4344
- `prisma:studio`: Open the prisma studio.
4445

4546
## .env

package.json

+4
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@
1010
"prisma:generate": "prisma generate",
1111
"prisma:push": "prisma db push",
1212
"prisma:pull": "prisma db pull",
13+
"prisma:seed": "prisma db seed",
1314
"prisma:studio": "prisma studio"
1415
},
16+
"prisma": {
17+
"seed": "ts-node prisma/seed.ts"
18+
},
1519
"author": "DevPanda (Florian Richter)",
1620
"license": "MIT",
1721
"dependencies": {

prisma/schema.prisma

+5-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ datasource db {
1111
model Settings {
1212
id Int @id @default(autoincrement())
1313
14-
apiAutoStart Boolean @default(true)
15-
apiPort Int @default(3000)
16-
apiDomain String @default("http://localhost")
14+
apiAutoStart Boolean @default(true)
15+
apiPort Int @default(3000)
16+
apiDomain String @default("http://localhost")
17+
apiMetricsPath String @default("/metrics")
18+
apiStaticPrefix String @default("/public")
1719
1820
createdAt DateTime @default(now())
1921
updatedAt DateTime @updatedAt

prisma/seed.ts

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { PrismaClient } from "./generated/client";
2+
3+
const prisma = new PrismaClient({ errorFormat: "pretty" });
4+
5+
async function main() {
6+
await prisma.settings.upsert({
7+
where: { id: 1 },
8+
create: {
9+
apiAutoStart: true,
10+
apiPort: 3000,
11+
apiDomain: "https://localhost:3000",
12+
apiMetricsPath: "/metrics",
13+
apiStaticPrefix: "/public/",
14+
},
15+
update: {
16+
apiAutoStart: true,
17+
apiPort: 3000,
18+
apiDomain: "https://localhost:3000",
19+
apiMetricsPath: "/metrics",
20+
apiStaticPrefix: "/public/",
21+
},
22+
})
23+
}
24+
25+
main()
26+
.then(async () => {
27+
await prisma.$disconnect()
28+
})
29+
.catch(async (e) => {
30+
console.error(e)
31+
await prisma.$disconnect()
32+
process.exit(1)
33+
})

src/services/api/Api.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import fastifyStatic from "@fastify/static";
88
import fastifyMetrics from "fastify-metrics";
99
import fastifyQs from "fastify-qs";
1010
import * as path from "path";
11+
import ConfigService from "../../utils/Config";
1112

1213
export default class Api {
1314
static _instance: Api
@@ -34,9 +35,10 @@ export default class Api {
3435
}
3536

3637
async start(): Promise<void> {
37-
await this.registerPlugins()
38+
const config = ConfigService.getInstance().config!
39+
await this.registerPlugins(config.apiStaticPrefix, config.apiMetricsPath)
3840

39-
this.fastify.listen({ port: 3000 }, (err, address) => {
41+
this.fastify.listen({ port: config.apiPort }, (err, address) => {
4042
if (err) {
4143
this.fastify.log.error(err)
4244
process.exit(1)
@@ -48,7 +50,7 @@ export default class Api {
4850
await this.fastify.close()
4951
}
5052

51-
async registerPlugins(): Promise<void> {
53+
async registerPlugins(staticPrefix: string, metricsPath: string): Promise<void> {
5254
this.fastify.register(fastifyAutoload, {
5355
dir: __dirname + '/routes',
5456
})
@@ -84,7 +86,7 @@ export default class Api {
8486
console.log(__dirname)
8587
this.fastify.register(fastifyStatic, {
8688
root: path.join(__dirname, '/public'),
87-
prefix: '/public/',
89+
prefix: staticPrefix,
8890
constraints: { host: 'example.com' }
8991
})
9092

@@ -97,7 +99,7 @@ export default class Api {
9799

98100
// https://gitlab.com/m03geek/fastify-metrics
99101
this.fastify.register(fastifyMetrics, {
100-
endpoint: '/metrics',
102+
endpoint: metricsPath,
101103
})
102104

103105
// https://www.npmjs.com/package/fastify-qs

tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@
2525
"rootDir": "./src/",
2626
"outDir": "./dist/"
2727
},
28-
"include": ["./src/**/*.ts"],
28+
"include": ["./src/**/*.ts", "./prisma/seed.ts"],
2929
}

0 commit comments

Comments
 (0)