Use SQLite

This commit is contained in:
Joakim Hellsén 2024-03-28 02:58:22 +01:00
commit 20f38de611
No known key found for this signature in database
GPG key ID: D196AE66FEBE1DC9
8 changed files with 11 additions and 91 deletions

View file

@ -3,8 +3,4 @@ SECRET_KEY=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
DISCORD_WEBHOOK_URL=
DB_NAME=
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=
DATABASE_PATH=/data

View file

@ -15,21 +15,6 @@ jobs:
ADMIN_EMAIL: 4153203+TheLovinator1@users.noreply.github.com
EMAIL_HOST_USER: ${{ secrets.EMAIL_HOST_USER }}
EMAIL_HOST_PASSWORD: ${{ secrets.EMAIL_HOST_PASSWORD }}
DB_NAME: feedvault
DB_USER: feedvault
DB_PASSWORD: githubtest
DB_HOST: 127.0.0.1
DB_PORT: 5432
services:
postgres:
image: postgres:16
env:
POSTGRES_PASSWORD: ${{ env.DB_PASSWORD }}
POSTGRES_DB: ${{ env.DB_NAME }}
POSTGRES_USER: ${{ env.DB_USER }}
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 1s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5

View file

@ -6,7 +6,6 @@ services:
user: "1000:1000"
restart: always
networks:
- feedvault_db
- feedvault_web
environment:
- SECRET_KEY=${SECRET_KEY}
@ -14,11 +13,6 @@ services:
- EMAIL_HOST_USER=${EMAIL_HOST_USER}
- EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD}
- DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
- DB_NAME=feedvault
- DB_HOST=feedvault_postgres
- DB_PORT=5432
- DB_USER=feedvault
- DB_PASSWORD=${DB_PASSWORD}
volumes:
- /mnt/Fourteen/Docker/FeedVault/staticfiles:/app/staticfiles
- /mnt/Fourteen/Docker/FeedVault/media:/app/media
@ -42,23 +36,6 @@ services:
- feedvault_web
- feedvault_tunnel
# Postgres - Database
postgres:
container_name: feedvault_postgres
image: postgres:16
user: "1000:1000"
ports:
- 5432:5432
restart: always
environment:
- POSTGRES_USER=feedvault
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=feedvault
volumes:
- /mnt/Fourteen/Docker/FeedVault/Postgres:/var/lib/postgresql/data
networks:
- feedvault_db
# Cloudflare Tunnel - Securely connect your server to Cloudflare
tunnel:
container_name: feedvault_tunnel
@ -73,7 +50,5 @@ services:
networks:
feedvault_tunnel:
driver: bridge
feedvault_db:
driver: bridge
feedvault_web:
driver: bridge

View file

@ -15,13 +15,7 @@ def add_global_context(request: HttpRequest) -> dict[str, str | int]:
Returns:
A dictionary with the global context.
"""
from feedvault.stats import get_db_size # noqa: PLC0415
from .models import Feed # noqa: PLC0415
db_size: str = get_db_size()
amount_of_feeds: int = Feed.objects.count()
return {
"db_size": db_size,
"amount_of_feeds": amount_of_feeds,
}
return {"amount_of_feeds": amount_of_feeds}

View file

@ -81,15 +81,14 @@ MIDDLEWARE: list[str] = [
"django_htmx.middleware.HtmxMiddleware",
]
# Use PostgreSQL as the default database
DATABASES: dict[str, dict[str, str]] = {
DATABASE_PATH: str = os.getenv("DATABASE_PATH", "/data")
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.getenv("DB_NAME", default="feedvault"),
"USER": os.getenv("DB_USER", default="feedvault"),
"PASSWORD": os.getenv("DB_PASSWORD", default="feedvault"),
"HOST": os.getenv("DB_HOST", default="localhost"),
"PORT": os.getenv("DB_PORT", default="5432"),
"ENGINE": "django.db.backends.sqlite3",
"NAME": Path(DATABASE_PATH) / "feedvault.sqlite3",
"OPTIONS": {
"timeout": 30,
},
},
}

View file

@ -1,22 +0,0 @@
from __future__ import annotations
import logging
from django.db import connection
logger: logging.Logger = logging.getLogger(__name__)
def get_db_size() -> str:
"""Get the size of the database.
Returns:
str: The size of the database.
"""
# Get Postgres database size
with connection.cursor() as cursor:
cursor.execute("SELECT pg_size_pretty(pg_database_size(current_database()))")
db_size_result: tuple[str, ...] | None = cursor.fetchone()
db_size: str | None = db_size_result[0] if db_size_result else None
return db_size if db_size is not None else "0 MB"

View file

@ -9,7 +9,6 @@ from django.test import Client, TestCase
from django.urls import reverse
from feedvault.models import Domain, Entry, Feed, UserUploadedFile
from feedvault.stats import get_db_size
if TYPE_CHECKING:
from django.http import HttpResponse
@ -238,14 +237,6 @@ class TestSitemap(TestCase):
assert "urlset" in response2.content.decode(), f"Expected 'urlset' in response, got {response2.content}"
class TestStats(TestCase):
def test_db_size(self) -> None:
"""Test if the database size is returned."""
response: str = get_db_size()
assert isinstance(response, str), f"Expected a string, got {response}"
assert "kB" in response, f"Expected 'kB' in response, got {response}"
class TestSearch(TestCase):
def setUp(self) -> None:
"""Create a test feed."""

View file

@ -461,6 +461,8 @@ class SearchView(View):
if not query:
return FeedsView().get(request)
# TODO(TheLovinator): #20 Search more fields
# https://github.com/TheLovinator1/FeedVault/issues/20
feeds: BaseManager[Feed] = Feed.objects.filter(feed_url__icontains=query).order_by("-created_at")[:100]
context = {