bublliodocs
Ανάπτυξη και λειτουργία

Ρύθμιση database

Επιλέξτε SQLite ή PostgreSQL μέσω του DATABASE_URL και κρατήστε τον application code ανεξάρτητο από τη βάση.

Το Bubllio CRM χρησιμοποιεί το Django ORM και τα database backends του Django. Ο application code δεν περιέχει custom database adapters. Επιλέξτε υποστηριζόμενο backend μέσω του DATABASE_URL.

Γρήγορη επιλογή

ΣτόχοςΡύθμιση
Άμεση εκκίνησηΔεν χρειάζεται ρύθμιση· χρησιμοποιείται αυτόματα SQLite.
Τοπικό PostgreSQLΞεκινήστε την υπηρεσία Compose και ορίστε το παρεχόμενο URL.
Υπάρχων PostgreSQL serverΟρίστε το connection URL που παρέχει ο server.

Τρέχουσα υποστήριξη:

  • SQLite: ενσωματωμένο και ενεργό από προεπιλογή.
  • PostgreSQL: υποστηρίζεται μέσω της προαιρετικής dependency extra postgres.
  • MySQL και άλλα URL schemes: απορρίπτονται με σαφές μήνυμα μέχρι να δοκιμαστούν και να τεκμηριωθούν από το project.

SQLite χωρίς ρύθμιση

Αν το DATABASE_URL δεν έχει οριστεί ή είναι κενό, το Django χρησιμοποιεί το src/db.sqlite3.

uv sync
uv run python src/manage.py migrate
uv run python src/manage.py runserver

Το SQLite file περιέχει local data και εξαιρείται από το Git.

Τοπικό PostgreSQL με Docker

Ξεκινήστε μόνο την υπηρεσία database και εγκαταστήστε τον προαιρετικό driver:

docker compose up -d postgres
uv sync --extra postgres
cp .env.example .env

Αφαιρέστε το σχόλιο από αυτή τη γραμμή στο .env:

DATABASE_URL=postgresql://bubllio:bubllio@localhost:5432/bubllio

Έπειτα εφαρμόστε migrations και ξεκινήστε κανονικά:

uv run python src/manage.py migrate
uv run python src/manage.py runserver

Ελέγξτε την υπηρεσία με docker compose ps ή docker compose logs postgres. Το docker compose down σταματά την υπηρεσία χωρίς να διαγράψει το named data volume. Η διαγραφή του volume καταστρέφει τα local PostgreSQL data και δεν αποτελεί μέρος της κανονικής ροής.

Υπάρχον ή hosted PostgreSQL

Ορίστε το URL που παρέχει ο database provider:

DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE

Κάντε URL-encode ειδικούς χαρακτήρες σε username και password. Οι provider query options, μαζί με τις SSL parameters, παραμένουν μέρος του URL. Στη συνέχεια εκτελέστε:

uv sync --extra postgres
uv run python src/manage.py migrate
uv run python src/manage.py check

Για ευκολία σε local development, το project φορτώνει το root .env. Οι υπάρχουσες process environment variables έχουν προτεραιότητα· έτσι τα deployments μπορούν να ορίζουν DATABASE_URL χωρίς αρχείο.

Μην κάνετε commit το .env ή πραγματικά credentials. Το .env.example περιέχει ασφαλή παραδείγματα.

Η κρυπτογράφηση email account είναι ανεξάρτητη από τη ρύθμιση database. Αν το UI δημιουργεί SMTP accounts, ορίστε BUBLLIO_EMAIL_ENCRYPTION_KEYS στο .env, όπως περιγράφεται στο docs/architecture/email-adapters.md.

Ιστορικό migrations

Η εφαρμογή Organizations περιλαμβάνει squashed migration για νέες εγκαταστάσεις: 0001_squashed_0009_backfill_installation_fallback_email_account. Οι αρχικές migrations παραμένουν προσωρινά στο repository, ώστε υπάρχουσες εγκαταστάσεις που τις έχουν ήδη καταγράψει να μπορούν να αναβαθμιστούν με ασφάλεια.

Μη διαγράψετε τα αρχικά migration files μέχρι κάθε deployed database να έχει εφαρμόσει ολόκληρη τη σειρά έως το 0009. Τότε μπορούν να αφαιρεθούν σε ξεχωριστό cleanup commit. Στο κανονικό development, εκτελέστε migrate και αφήστε το Django να επιλέξει αυτόματα το σωστό migration history.

Πώς λειτουργεί η ρύθμιση

Το src/bubllio_crm/database.py μετατρέπει το DATABASE_URL στη ρύθμιση Django DATABASES. Οι PostgreSQL connections χρησιμοποιούν health checks και παραμένουν ανοιχτές έως 60 δευτερόλεπτα. Σε malformed URLs, μη υποστηριζόμενα backends ή driver που λείπει, εμφανίζονται startup errors με συγκεκριμένη καθοδήγηση.

Models, migrations και queries πρέπει να μένουν ανεξάρτητα από backend, εκτός αν ένα feature τεκμηριώνει ρητά διαφορετική απαίτηση.

Αλλαγή database

Η SQLite και η PostgreSQL διατηρούν ξεχωριστά data. Η αλλαγή του DATABASE_URL αλλάζει τη database στην οποία συνδέεται το Django· δεν αντιγράφει records. Εκτελέστε migrate σε κάθε νέα, κενή database. Η μεταφορά υπαρχόντων data χρειάζεται ξεχωριστό export/import plan.

Επαλήθευση

Εκτελέστε τους ίδιους ελέγχους με SQLite και με ρυθμισμένη PostgreSQL:

uv run python src/manage.py check
uv run python src/manage.py migrate
uv run python src/manage.py test bubllio_crm organizations access onboarding companies contacts automations