185 lines
5.9 KiB
Markdown
185 lines
5.9 KiB
Markdown
# OpenEventDatabase Backend
|
|

|
|
|
|
OpenEventDatabase (OEDB) is a database for events with geographic information.
|
|
It is a collaborative way to share things that have no space in OpenStreetMap.
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Docker and Docker Compose
|
|
- PostgreSQL (if running locally without Docker)
|
|
- Python 3.x (if running locally without Docker)
|
|
|
|
### Installation
|
|
Copiez le fichier d'environnement pour accéder à la base de données.
|
|
```shell
|
|
cp .env.example .env
|
|
```
|
|
installez la base de données.
|
|
|
|
```shell
|
|
py -m venv venv
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt
|
|
bash setup_db.sh
|
|
```
|
|
vous pouvez ajouter des données d'exemple:
|
|
|
|
```shell
|
|
cd data
|
|
py import_example_from_csv.co2db.py
|
|
```
|
|
|
|
|
|
#### Using Docker (Recommended)
|
|
|
|
1. Clone the repository:
|
|
```
|
|
git clone https://github.com/yourusername/openeventdatabase.git
|
|
cd openeventdatabase/backend
|
|
```
|
|
|
|
2. Start the services using Docker Compose:
|
|
```
|
|
docker-compose up -d
|
|
```
|
|
|
|
This will start both the PostgreSQL database and the backend API server.
|
|
|
|
3. Access the API at `http://localhost:8080`
|
|
|
|
#### Running Locally
|
|
|
|
1. Install dependencies:
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Set up the database:
|
|
```
|
|
./setup_db.sh
|
|
```
|
|
|
|
3. Verify database tables are properly created:
|
|
```
|
|
./check_tables.sh
|
|
```
|
|
|
|
4. Start the server with uwsgi:
|
|
```
|
|
uwsgi --http :8080 --wsgi-file backend.py --callable app
|
|
```
|
|
|
|
Or with gunicorn:
|
|
```
|
|
gunicorn backend:app
|
|
```
|
|
|
|
Note: The server will automatically check database connectivity at startup and will exit if the PostgreSQL database is not responding.
|
|
|
|
If you encounter permission errors when accessing the API (such as "permission denied for table events"), run the setup script again to ensure proper permissions:
|
|
```
|
|
./setup_db.sh
|
|
```
|
|
|
|
You can also test database permissions with:
|
|
```
|
|
./test_permissions.sh
|
|
```
|
|
|
|
Or specifically test permissions on the events table:
|
|
```
|
|
./test_table_permissions.sh
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
- `DB_NAME`: Database name (default: "oedb")
|
|
- `DB_HOST`: Database host (default: localhost)
|
|
- `DB_USER`: Database user (default: postgres)
|
|
- `POSTGRES_PASSWORD`: Database password
|
|
- `NEW_USER`: New PostgreSQL user to create with full permissions (default: "oedb_user")
|
|
- `NEW_PASSWORD`: Password for the new PostgreSQL user (default: "oedb_password")
|
|
|
|
### Mock Data
|
|
|
|
The repository includes scripts to create and check mock events in the database:
|
|
|
|
1. Create mock events:
|
|
```
|
|
./create_mock_events.py
|
|
```
|
|
This script creates 18 mock events (3 for each category: traffic, nature, weather, sport, conference, party) with start dates slightly before the current date and end dates far in the future.
|
|
|
|
2. Check mock events:
|
|
```
|
|
./check_mock_events.py
|
|
```
|
|
This script checks the mock events in the database, showing counts by category and date ranges for each event.
|
|
|
|
### API Documentation
|
|
|
|
The OpenEventDatabase API allows you to search for events using various query parameters. You can filter events by:
|
|
|
|
- Event type or category (`what`)
|
|
- Time period (`when`, `start`, `stop`)
|
|
- Geographic location (`bbox`, `near`, `polyline`)
|
|
- And more...
|
|
|
|
#### Query Parameters
|
|
|
|
For detailed information about the available query parameters, examples, and response format, see the [API Query Parameters Documentation](API_QUERY_PARAMS.md).
|
|
|
|
#### Search Endpoint
|
|
|
|
The API includes a dedicated search endpoint (`/event/search`) that allows you to search for events using a GeoJSON geometry in the request body. This is particularly useful for complex spatial queries. For more information, see the [Search Endpoint Documentation](SEARCH_ENDPOINT.md).
|
|
|
|
#### Anti-Spam and Caching Measures
|
|
|
|
The API implements caching and rate limiting to improve performance and prevent abuse. For more information about these measures, see the [Anti-Spam and Caching Measures Documentation](ANTI_SPAM_MEASURES.md).
|
|
|
|
#### Testing
|
|
|
|
A comprehensive test plan is available for verifying the functionality of the API, including caching, rate limiting, and search features. See the [Test Plan](TEST_PLAN.md) for details.
|
|
|
|
#### Swagger Documentation
|
|
|
|
Have a look at the swagger file for a complete API reference:
|
|
`swagger.json`
|
|
|
|
|
|
# Démo
|
|
|
|
page de démo listant les évènements selon leur type, les afficher sur une carte.
|
|
créer une page de démo qui permet de modifier un évènement, faire un lien vers cette page quand on ouvre une popup d'évènement sur la page de /demo. et afficher une icone pour les marqueurs de carte selon le type d'évènement, définis en quelques uns et utilise les icones de bulma css.
|
|
vérifier le fonctionnement des endpoints de recherche avec les queryparameters, les mettre dans la page de démo.
|
|
|
|
la page /demo/by-what a une erreur, Error: Expecting value: line 1 column 1 (char 0)
|
|
récupérer les évènements depuis osmcal dans osm_cal.py ✓
|
|
dans les extracteurs, vérifier qu'il n'existe pas déjà des évènements avec les mês propriétés avant de les créer. ✓
|
|
|
|
## Database Schema
|
|
|
|
The following diagram shows the database schema for the OpenEventDatabase:
|
|
|
|

|
|
|
|
The database consists of three main tables:
|
|
- **events**: Stores event data including type, what, when, geo reference, and tags
|
|
- **events_deleted**: Archive of deleted events
|
|
- **geo**: Stores geometry data referenced by events
|
|
|
|
The events table has a foreign key relationship with the geo table through the events_geo field, which references the hash field in the geo table.
|
|
|
|
|
|
-- il manque l'attribution openstreetmap sur les cartes maplibre. ✓
|
|
ajouter une icone pour ajouter les sources https://source.cipherbliss.com/tykayn/oedb-backend ✓
|
|
|
|
ajouter un lien sur la page de démo qui montre comment faire une recherche vers des évènements de type music, et de type sport ✓
|
|
|
|
proposer un contrôle de maplibre pour changer de fond de carte openstreetmap vecto ou raster. ✓
|
|
## License
|
|
|
|
See the LICENSE file for details.
|