From 7dd17340753e69d503a7c6aa6a151e022c89a333 Mon Sep 17 00:00:00 2001 From: Maxime Cannoodt Date: Sat, 2 Jul 2022 20:44:10 +0200 Subject: [PATCH] gitignore --- .gitignore | 1 + server/.env | 2 +- server/.env.example | 18 ++++++++++++++++++ server/.gitignore | 2 +- server/prisma/dev.db | Bin 57344 -> 0 bytes 5 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 server/.env.example delete mode 100644 server/prisma/dev.db diff --git a/.gitignore b/.gitignore index f4401a3..eaacb21 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ node_modules .env .env.* !.env.example +server/.env diff --git a/server/.env b/server/.env index 7e0a02e..defdaff 100644 --- a/server/.env +++ b/server/.env @@ -8,7 +8,7 @@ ENVIRONMENT=dev PORT=8080 FRONTEND_URL="http://localhost:3000" -DATABASE_URL="file:./dev.db" +DATABASE_URL="file:./dev.sqlite" CLEANUP_INTERVAL_SECONDS=60 diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 0000000..7e0a02e --- /dev/null +++ b/server/.env.example @@ -0,0 +1,18 @@ +# Environment variables declared in this file are automatically made available to Prisma. +# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema + +# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. +# See the documentation for all the connection string options: https://pris.ly/d/connection-strings + +ENVIRONMENT=dev +PORT=8080 + +FRONTEND_URL="http://localhost:3000" +DATABASE_URL="file:./dev.db" + +CLEANUP_INTERVAL_SECONDS=60 + +POST_LIMIT_WINDOW_SECONDS=3 # 3 seconds +POST_LIMIT=1 +# POST_LIMIT_WINDOW=86400 # 24 hours +# POST_LIMIT=50 diff --git a/server/.gitignore b/server/.gitignore index b7dab5e..dd87e2d 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -1,2 +1,2 @@ node_modules -build \ No newline at end of file +build diff --git a/server/prisma/dev.db b/server/prisma/dev.db deleted file mode 100644 index 4b39e5a6e1b8cc6ffddfc2b49e879d11c7498de5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 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