From 4a12b397462bcb90ec42192a816473650a35c31a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Mis=C3=A1k?= Date: Wed, 22 Jun 2022 20:07:30 +0200 Subject: [PATCH] Move from lowdb to Primsa --- .dockerignore | 3 + .gitignore | 5 +- Dockerfile | 11 +- README.md | 2 +- assets/css/tailwind.css | 2 +- components/monitoring-row.vue | 125 +++++++++++ formkit.config.ts | 22 ++ nuxt.config.ts | 3 +- package.json | 13 +- pages/index.vue | 23 +- pages/monitoring/[id].vue | 69 ++++++ pages/monitoring/create.vue | 50 ++--- server/api/monitoring/[id].delete.ts | 12 ++ server/api/monitoring/[id].get.ts | 12 ++ server/api/monitoring/[id].put.ts | 22 ++ server/api/monitoring/index.get.ts | 11 +- server/api/monitoring/index.post.ts | 9 +- server/data/schema.prisma | 29 +++ server/data/seed.ts | 47 +++++ server/plugins/daemon.ts | 2 +- server/plugins/database.ts | 20 +- server/service/data-fetcher.ts | 67 +++--- server/service/request.ts | 55 +++++ tailwind.config.js | 7 +- yarn.lock | 301 ++++++++++++++++++++++----- 25 files changed, 753 insertions(+), 169 deletions(-) create mode 100644 .dockerignore create mode 100644 components/monitoring-row.vue create mode 100644 formkit.config.ts create mode 100644 pages/monitoring/[id].vue create mode 100644 server/api/monitoring/[id].delete.ts create mode 100644 server/api/monitoring/[id].get.ts create mode 100644 server/api/monitoring/[id].put.ts create mode 100644 server/data/schema.prisma create mode 100644 server/data/seed.ts create mode 100644 server/service/request.ts diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..19ef5a1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.nuxt/ +node_modules/ +server/data/uptime.db diff --git a/.gitignore b/.gitignore index 02eaf5e..b58992b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,6 @@ dist # app .idea -!.gitkeep -server/data/ \ No newline at end of file +server/data/migrations +server/data/*.db +server/data/*.db-journal diff --git a/Dockerfile b/Dockerfile index 250b6e7..f486d95 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,8 +5,10 @@ WORKDIR /app COPY . ./ RUN yarn install \ - && yarn run build - + && sed -i 's/file:.\//file:\/app\/data\//g' server/data/schema.prisma \ + && $(npm bin)/prisma generate \ + && yarn run build \ + && $(npm bin)/prisma migrate dev --name init FROM node:18.4.0-alpine3.15 @@ -14,9 +16,8 @@ ENV NODE_NO_WARNINGS=1 WORKDIR /app -COPY --from=build /app/.output /app/.output - -RUN mkdir -p /app/server /app/server/data +COPY --from=build /app/.output ./.output +COPY --from=build /app/data ./data ENV HOST=0.0.0.0 ENV PORT=80 diff --git a/README.md b/README.md index 176f281..6c0cf9e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ A fast, minimalistic, and powerful self-hosted monitoring tool built on modern t ### 🐳 Docker ```bash -docker run -p 80:80 -v uptime-nuxt:/app/server/data misaon/uptime-nuxt:latest +docker run -p 80:80 -v uptime-nuxt:/app/data misaon/uptime-nuxt:latest ``` Browse to http://localhost:80 after starting. diff --git a/assets/css/tailwind.css b/assets/css/tailwind.css index 9b8f13f..cbf0a83 100644 --- a/assets/css/tailwind.css +++ b/assets/css/tailwind.css @@ -16,7 +16,7 @@ @layer components { .btn { - @apply flex gap-1 items-center rounded bg-gradient-to-r bg-slate-300 dark:from-slate-700 dark:to-slate-600 py-2 px-3 hover:opacity-80; + @apply flex gap-1 items-center rounded bg-gradient-to-r bg-slate-300 dark:from-slate-700 dark:to-slate-600 py-2 px-3 hover:opacity-80 disabled:opacity-50 disabled:cursor-not-allowed; } .btn > svg { diff --git a/components/monitoring-row.vue b/components/monitoring-row.vue new file mode 100644 index 0000000..f3b3952 --- /dev/null +++ b/components/monitoring-row.vue @@ -0,0 +1,125 @@ + + + diff --git a/formkit.config.ts b/formkit.config.ts new file mode 100644 index 0000000..db1f463 --- /dev/null +++ b/formkit.config.ts @@ -0,0 +1,22 @@ +import { en } from '@formkit/i18n' +import { DefaultConfigOptions } from '@formkit/vue' +import { generateClasses } from '@formkit/themes' + +const config: DefaultConfigOptions = { + locales: { en }, + locale: 'en', + config: { + classes: generateClasses({ + text: { + outer: 'flex flex-col gap-1', + wrapper: 'flex flex-col gap-1', + label: 'font-bold ', + input: 'input w-full', + help: 'text-slate-400 text-sm', + message: 'py-1 px-2 rounded text-white bg-orange-600 inline-block' + } + }) + } +} + +export default config diff --git a/nuxt.config.ts b/nuxt.config.ts index 2ef80ed..5ddc8a5 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -5,7 +5,8 @@ export default defineNuxtConfig({ ssr: false, modules: [ '@nuxtjs/tailwindcss', - '@nuxtjs/color-mode' + '@nuxtjs/color-mode', + '@formkit/nuxt' ], colorMode: { // eslint-disable-next-line unicorn/no-keyword-prefix diff --git a/package.json b/package.json index 0b9148b..9a7db24 100644 --- a/package.json +++ b/package.json @@ -7,22 +7,29 @@ "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", - "lint": "eslint --ext .vue,.ts,.js,.mjs ." + "lint": "eslint --ext .vue,.ts,.js,.mjs .", + "seed": "prisma migrate dev --name init" }, "devDependencies": { + "@formkit/nuxt": "^1.0.0-beta.8", + "@formkit/themes": "^1.0.0-beta.8", "@iconify/json": "^2.1.63", "@nuxtjs/color-mode": "^3.1.4", "@nuxtjs/eslint-config-typescript": "^10.0.0", "@nuxtjs/tailwindcss": "^5.1.2", + "@prisma/client": "^3.15.2", "@tailwindcss/forms": "^0.5.2", + "chart.js": "^3.8.0", "eslint": "^8.18.0", "eslint-plugin-tailwindcss": "^3.5.2", "nuxt": "3.0.0-rc.4", + "prisma": "^3.15.2", "typescript": "^4.7.4", "unplugin-icons": "^0.14.5" }, - "dependencies": { - "lowdb": "^3.0.0" + "prisma": { + "seed": "node ./server/data/seed.ts", + "schema": "./server/data/schema.prisma" }, "packageManager": "yarn@3.2.1" } diff --git a/pages/index.vue b/pages/index.vue index f1d89d8..dcc8bdc 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,22 +1,7 @@