Compare commits

...

10 Commits

Author SHA1 Message Date
Mathis
3a493ac3a1 ajout export1 2025-04-13 23:03:39 +02:00
Mathis
e6cc70a657 Mise à jour du README 2025-04-13 22:59:01 +02:00
Mathis
6f1b1f0a9e bdd 2025-04-13 22:49:46 +02:00
Mathis
32546cf504 Ajout du README 2025-04-13 22:29:10 +02:00
Mathis
25f36f3b1e Merge branch 'main' of https://github.com/Charles40130/Projet-Dev-Web-Ing1 2025-04-13 22:04:54 +02:00
Mathis
83c9212394 Ajout de la fonction pour supprimer une demande 2025-04-13 22:04:49 +02:00
Mathuw6433
173509e5b6
Update README.md 2025-04-13 21:50:11 +02:00
Mathuw6433
595d326e5d
Update README.md 2025-04-13 21:49:25 +02:00
Mathuw6433
2532d5074f
Update README.md 2025-04-13 21:45:11 +02:00
Mathis
462fc28f2c Changement homepage 2025-04-13 21:16:31 +02:00
9 changed files with 374 additions and 320 deletions

View File

@ -75,6 +75,7 @@ public class MainVerticle extends AbstractVerticle {
router.post("/deleteCategories").handler(setObjects::deleteCategories);
router.post("/requestDeleteObject").handler(RequestDeleteObject::deleteObject);
router.get("/getDemandeSuppression").handler(DeleteObject::getAllDeletionRequests);
router.post("/reject").handler(RequestDeleteObject::rejectDemande);
// Routes d'authentification
router.post("/signup").handler(authHandler::handleSignup);
router.post("/login").handler(authHandler::handleLogin);

View File

@ -13,53 +13,71 @@ public class QueryDeleteObject {
public void deleteObject(RoutingContext context) {
JsonObject body = context.body().asJsonObject();
if (body == null) {
context.response().setStatusCode(400).end(new JsonObject().put("error", "Requête invalide").encode());
context.response().setStatusCode(400)
.end(new JsonObject().put("error", "Requête invalide").encode());
return;
}
Integer objectId = body.getInteger("object_id");
Integer userId = body.getInteger("requested_by");
if (objectId == null || userId == null) {
context.response().setStatusCode(400).end(new JsonObject().put("error", "Champs manquants").encode());
context.response().setStatusCode(400)
.end(new JsonObject().put("error", "Champs manquants").encode());
return;
}
String checkQuery = "SELECT id FROM weather_objects WHERE id = ?";
databaseService.pool.preparedQuery(checkQuery).execute(Tuple.of(objectId), res -> {
if (res.failed()) {
res.cause().printStackTrace();
res.cause().printStackTrace();
context.response().setStatusCode(500)
.end(new JsonObject().put("error", "Erreur base de données").encode());
.end(new JsonObject().put("error", "Erreur base de données").encode());
return;
}
if (res.result().rowCount() == 0) {
context.response().setStatusCode(404).end(new JsonObject().put("error", "Objet non trouvé").encode());
context.response().setStatusCode(404)
.end(new JsonObject().put("error", "Objet non trouvé").encode());
return;
}
String checkDuplicate = "SELECT 1 FROM deletion_requests WHERE object_id = ? AND requested_by = ?";
String insertQuery = "INSERT INTO deletion_requests (object_id, requested_by) VALUES (?, ?)";
databaseService.pool.preparedQuery(insertQuery).execute(Tuple.of(objectId, userId), insertRes -> {
if (insertRes.succeeded()) {
context.response().setStatusCode(200)
.end(new JsonObject().put("message", "Demande envoyée").encode());
} else {
insertRes.cause().printStackTrace();
databaseService.pool.preparedQuery(checkDuplicate).execute(Tuple.of(objectId, userId), duplicateCheck -> {
if (duplicateCheck.failed()) {
duplicateCheck.cause().printStackTrace();
context.response().setStatusCode(500)
.end(new JsonObject().put("error", "Erreur insertion").encode());
.end(new JsonObject().put("error", "Erreur vérification duplication").encode());
return;
}
if (duplicateCheck.result().rowCount() > 0) {
context.response().setStatusCode(409)
.end(new JsonObject().put("error", "Demande déjà existante").encode());
return;
}
String insertQuery = "INSERT INTO deletion_requests (object_id, requested_by) VALUES (?, ?)";
databaseService.pool.preparedQuery(insertQuery).execute(Tuple.of(objectId, userId), insertRes -> {
if (insertRes.succeeded()) {
context.response().setStatusCode(200)
.end(new JsonObject().put("message", "Demande envoyée").encode());
} else {
insertRes.cause().printStackTrace();
context.response().setStatusCode(500)
.end(new JsonObject().put("error", "Erreur insertion").encode());
}
});
});
});
}
public void getAllDeletionRequests(RoutingContext context) {
String query = "SELECT * FROM deletion_requests";
@ -89,4 +107,38 @@ public class QueryDeleteObject {
});
}
public void rejectDemande(RoutingContext context){
JsonObject body = context.body().asJsonObject();
if (body == null) {
context.response()
.setStatusCode(400)
.end(new JsonObject().put("error", "Corps de la requête manquant").encode());
return;
}
Integer id = body.getInteger("id");
databaseService.pool
.preparedQuery("DELETE FROM deletion_requests WHERE id=?")
.execute(Tuple.of(id))
.onFailure(e -> {
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
context.response()
.setStatusCode(500)
.end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
})
.onSuccess(rows -> {
if (rows.rowCount() == 0) {
context.response()
.setStatusCode(404)
.end(new JsonObject().put("error", "Demande non trouvé").encode());
return;
}
context.response()
.putHeader("content-type", "application/json: charset=UTF-8")
.end(new JsonObject().put("success", "La demande à bien été supprimé").encode());
return;
});
}
}

View File

@ -1,114 +0,0 @@
# Projet-Dev-Web-In1
Bienvenue dans le projet **DevWeb** ! Ce projet utilise **Vite** et **React** pour créer une application web moderne et performante.
## Prérequis
Avant de commencer, assurez-vous que vous avez les éléments suivants installés sur votre machine :
- **Node.js** (version 16 ou supérieure) : Vous pouvez télécharger Node.js depuis [nodejs.org](https://nodejs.org).
- **Git** : Pour cloner le projet depuis GitHub, vous devez avoir Git installé. Vous pouvez le télécharger depuis [git-scm.com](https://git-scm.com).
## Récupérer le projet
### Cloner le dépôt
Ouvrez votre terminal et clonez le projet depuis GitHub :
```bash
git clone git@github.com:Charles40130/Projet-Dev-Web-Ing1.git
```
Ou si vous utilisez HTTPS :
```bash
git clone https://github.com/Charles40130/Projet-Dev-Web-Ing1.git
```
Ensuite, entrez dans le répertoire du projet cloné :
```bash
cd Projet-Dev-Web-Ing1
Installation des dépendances
```
Une fois que vous avez cloné le projet, vous devez installer les dépendances nécessaires.
Exécutez la commande suivante dans le terminal à partir du répertoire du projet :
```bash
npm install
```
Cela téléchargera et installera toutes les dépendances du projet listées dans le fichier package.json.
Lancer l'application
En mode développement
Pour démarrer l'application en mode développement, utilisez la commande suivante :
```bash
npm run dev
```
Cela démarrera un serveur local, généralement accessible sur http://localhost:3000, où vous pourrez voir l'application en direct.
En mode production
Si vous souhaitez tester l'application en mode production, exécutez la commande suivante :
```bash
npm run build
npm run preview
```
Cela générera une version optimisée de votre application dans le dossier dist et vous permettra de la prévisualiser localement.
Structure du projet
Voici un aperçu de la structure des dossiers et fichiers principaux du projet :
/Projet-Dev-Web-Ing1
├── /node_modules # Dépendances installées
├── /public # Fichiers publics (images, index.html, etc.)
├── /src # Code source de l'application (React)
│ ├── /assets # Ressources comme les images
│ ├── /components # Composants React
│ ├── /styles # Fichiers CSS ou SCSS
│ └── /App.jsx # Composant principal de l'application
├── package.json # Dépendances et scripts de l'application
└── README.md # Ce fichier
Commandes utiles
npm run dev : Lance l'application en mode développement.
npm run build : Crée une version optimisée de l'application pour la production.
npm run preview : Prévisualise l'application en mode production après la construction.
Contribution
Si vous souhaitez contribuer à ce projet, voici quelques étapes pour commencer :
Forkez ce dépôt sur GitHub.
Clonez votre fork localement.
Créez une nouvelle branche pour vos modifications :
```bash
git checkout -b nom-de-votre-branche
```
Apportez vos modifications.
Commitez vos changements :
```bash
git commit -m "Description des modifications"
```
Poussez vos changements sur votre fork :
git push origin nom-de-votre-branche
Ouvrez une Pull Request pour proposer vos modifications.
License
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Merci d'utiliser ce projet et bonne utilisation ! 🚀
---
### Explication du contenu :
- **Prérequis** : Indique les outils nécessaires pour faire fonctionner le projet (Node.js, Git).
- **Récupérer le projet** : Explique comment cloner le projet depuis GitHub.
- **Installation des dépendances** : Donne la commande pour installer les dépendances via `npm`.
- **Lancer l'application** : Détaille les commandes pour lancer l'application en mode développement et production.
- **Structure du projet** : Présente l'arborescence du projet pour mieux comprendre sa structure.
- **Commandes utiles** : Liste des commandes npm pour les tâches courantes.
- **Contribution** : Explique comment contribuer au projet si d'autres développeurs souhaitent participer.
- **License** : Mentionne la licence du projet, à ajuster si nécessaire.
Cela devrait aider n'importe quel développeur à récupérer et à lancer facilement ton

View File

@ -117,18 +117,36 @@ function AdminObjet() {
setVerif(true);
}
};
const handleReject =(id) => {
axios
.post(`${API_BASE_URL}/reject`, {
id,
})
.then((response) => {
setMessRequete("La demande à bien été supprimé !");
console.log("La demande à été supprimée :", response.data);
window.location.reload();
})
.catch((error) => {
setMessRequete(
"Il y a eu une erreur dans la suppression de la demande !"
);
console.error("Erreur lors de la suppression de la demande :", error);
});
}
const handleDeleteObject = (id) => {
axios
.post(`${API_BASE_URL}/deleteObject`, {
id,
})
.then((response) => {
setMessRequete("Votre objet à bien été supprimé !");
alert("Votre objet à bien été supprimé !");
console.log("Votre objet à été supprimé :", response.data);
window.location.reload();
})
.catch((error) => {
setMessRequete(
alert(
"Il y a eu une erreur dans la suppression de votre objet !"
);
console.error("Erreur lors de la suppression de l'objet :", error);
@ -143,7 +161,7 @@ function AdminObjet() {
let fieldB = b[sortCriteria] || "";
return fieldA.localeCompare(fieldB);
});
return (
<div className="flex h-screen">
<Sidebar />

View File

@ -66,9 +66,6 @@ function Dashboard() {
setAdminObjects(response.data);
});
axios.get(`${API_BASE_URL}/demandeSuppression`).then((response) => {
setRequestDeleteObject(response.data);
});
}, []);
const [adminObjects, setAdminObjects] = useState([]);

View File

@ -26,12 +26,13 @@ import { API_BASE_URL } from "../config";
function EnhancedWeatherHome() {
const [searchQuery, setSearchQuery] = useState("");
const [locations, setLocations] = useState([]);
const [infoMeteo,setInfoMeteo] = useState([]);
const [infoMeteo, setInfoMeteo] = useState([]);
const [activeFilter, setActiveFilter] = useState("all");
const [currentTime, setCurrentTime] = useState(new Date());
const { user, token } = useAuth();
const [ville, setVille] = useState("Paris, France");
const isDayTime = currentTime.getHours() > 6 && currentTime.getHours() < 20;
const heure = currentTime.getHours();
const isDayTime = heure > 6 && heure < 20;
useEffect(() => {
const timer = setInterval(() => {
@ -43,7 +44,7 @@ function EnhancedWeatherHome() {
useEffect(() => {
axios
.post(`${API_BASE_URL}/getMeteoHome`, {
location:ville,
location: ville,
})
.then((response) => {
if (response.data.length === 0) {
@ -80,34 +81,38 @@ function EnhancedWeatherHome() {
return date.toLocaleDateString("fr-FR", options);
};
const formatHeure = (h) => {
const heureFormatee = (h % 24).toString().padStart(2, "0");
return `${heureFormatee}:00`;
};
const hourlyForecast = [
{
time: "Maintenant",
temp: infoMeteo.temperature+"°",
icon: <Cloud className="text-indigo-500" size={24} />,
},
{
time: "14:00",
temp: "22°",
icon: <Cloud className="text-indigo-500" size={24} />,
},
{
time: "15:00",
time: formatHeure(heure + 1),
temp: "22°",
icon: <Cloud className="text-indigo-500" size={24} />,
},
{
time: formatHeure(heure + 2),
temp: "22°",
icon: <Sun className="text-yellow-500" size={24} />,
},
{
time: "16:00",
time: formatHeure(heure + 3),
temp: "21°",
icon: <Sun className="text-yellow-500" size={24} />,
},
{
time: "17:00",
time: formatHeure(heure + 4),
temp: "20°",
icon: <CloudRain className="text-blue-500" size={24} />,
},
{
time: "18:00",
time: formatHeure(heure + 5),
temp: "19°",
icon: <CloudRain className="text-blue-500" size={24} />,
},
@ -169,9 +174,6 @@ function EnhancedWeatherHome() {
<>
<div className="absolute top-10 right-14 w-20 h-20 rounded-full bg-gray-200 blur-lg opacity-70"></div>
<div className="absolute top-14 right-10 w-14 h-14 rounded-full bg-gray-900 blur-sm"></div>
<div className="absolute top-20 left-1/4 w-2 h-2 rounded-full bg-white blur-none opacity-90"></div>
<div className="absolute top-40 left-1/3 w-1 h-1 rounded-full bg-white blur-none opacity-90"></div>
<div className="absolute top-14 left-1/2 w-2 h-2 rounded-full bg-white blur-none opacity-90"></div>
</>
)}
</div>
@ -321,7 +323,7 @@ function EnhancedWeatherHome() {
isDayTime ? "text-gray-900" : "text-white"
}`}
>
{infoMeteo.temperature-2}°C
{infoMeteo.temperature - 2}°C
</span>
</div>
</div>

View File

@ -1,6 +1,6 @@
# Gestion des Objets Connectés
Cette application permet de gérer les objets connectés, les utilisateurs, et les catégories via une interface d'administration intuitive. Elle inclut un système de journalisation des actions utilisateurs et un contrôle des rôles.
Vigimétéo est une plateforme web innovante dédiée à la visualisation en temps réel des données météorologiques issues de capteurs connectés. Ce projet permet à tout utilisateur de consulter des informations météo actualisées tout en offrant un espace dadministration complet pour gérer capteurs, utilisateurs et catégories.
## Table des matières
@ -14,35 +14,37 @@ Cette application permet de gérer les objets connectés, les utilisateurs, et l
## Description
Une application de gestion des objets connectés. Elle permet de gérer les utilisateurs, les objets et les catégories, et de suivre les actions dans un journal des logs.
Vigimétéo est un outil à la fois utile et accessible face aux enjeux climatiques actuels. Grâce à une architecture mêlant React pour le front-end et Vert.x pour le back-end, le système repose sur une base de données PostgreSQL centralisant les mesures collectées par les stations.
Linterface permet à la fois une consultation intuitive pour le grand public, et une gestion complète pour les administrateurs via un tableau de bord sécurisé.
## Fonctionnalités
- Consultation des données météorologiques
- Gestion d'IoT météorologique avec possibilité d'ajouter des alertes si les données sont deviennent trop extremes
- Gestion des utilisateurs : ajout, suppression, modification
- Gestion des catégories d'objets
- Suivi des actions via un journal des logs
- Interface responsive
- Authentification sécurisée avec JWT
## Installation
1. Front-end :
Ouvrez un terminal,déplacez vous dans le dossier Front-end du projet et executez la commande 'npm install'
Ouvrez un terminal, déplacez vous dans le dossier Front-end du projet et executez la commande 'npm install'
2. Back-end :
Assurez-vous d'avoir toutes ces étapes de faite avant de lancer le projet
Assurez-vous que toutes ces étapes soient faites avant de lancer le projet
Installer java
Installer starter VERTX sur le site (https://vertx.io/docs/)
Installer le starter Vert.x depuis le site (https://vertx.io/docs/)
Installer JDK
Configurer java.home = « PATH/FOR/JDK »
Installer mvn : choco install mvn
**Dans le dossier Back-end du projet**
Mettre a jour les dépendances : mvn clean install
Mettre à jour les dépendances : mvn clean install
3. Lancez l'application :
**Dans le dossier Back-end du projet**
mvn exec:java
**Dans le dossier Front-end du projet**
npm start
npm run dev
## Base de données
@ -51,11 +53,28 @@ Une application de gestion des objets connectés. Elle permet de gérer les util
sudo apt install postgresql postgresql-contrib
2. Démarez le service:
sudo service postgresql start
3. Créez la base de Données:
CREATE DATABASE postgres;
4. Importer la base de données:
3. Lancer pgAdmin 4:
-Connectez-vous à votre serveur PostgreSQL avec le mot de passe administrateur.
-Faites un clic droit sur Databases > Create > Database....
-Appelez la "postgres" et cliquez sur Save.
4. Importer la base de données via pgAdmin :
-Faites un clic droit sur votre nouvelle base de données et selectionez "Restore"
-Entrez le chemin du fichier export.sql situé dans le repertoire sql à la racine du projet
-Cliquez sur Restore
----------------- Ou en ligne de commande ----------------------
5. Importer la base de données:
psql -U postgres -d postgres -f ./export.sql
---------------- Ou avec execution de commande sql ------------
6. Importer la base de données:
-creer la base de donnée "postgres" puis executer le fichier export1.sql
---
5. Verifiez que vos informations correspondent au fichier '.\Back-end\src\main\java\com\example\starter\DatabaseService.java'
-Nom de la base
-Nom dutilisateur
-Mot de passe
-Port
## Utilisation

Binary file not shown.

View File

@ -2,14 +2,15 @@
-- PostgreSQL database dump
--
-- Dumped from database version 16.8 (Ubuntu 16.8-0ubuntu0.24.04.1)
-- Dumped by pg_dump version 16.8 (Ubuntu 16.8-0ubuntu0.24.04.1)
-- Dumped from database version 17.4
-- Dumped by pg_dump version 17.4
-- Started on 2025-04-13 11:04:16 CEST
-- Started on 2025-04-13 23:02:35
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
@ -23,7 +24,7 @@ SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- TOC entry 223 (class 1259 OID 16527)
-- TOC entry 226 (class 1259 OID 32826)
-- Name: categories; Type: TABLE; Schema: public; Owner: postgres
--
@ -36,7 +37,7 @@ CREATE TABLE public.categories (
ALTER TABLE public.categories OWNER TO postgres;
--
-- TOC entry 222 (class 1259 OID 16526)
-- TOC entry 225 (class 1259 OID 32825)
-- Name: categories_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
@ -52,8 +53,8 @@ CREATE SEQUENCE public.categories_id_seq
ALTER SEQUENCE public.categories_id_seq OWNER TO postgres;
--
-- TOC entry 3502 (class 0 OID 0)
-- Dependencies: 222
-- TOC entry 4963 (class 0 OID 0)
-- Dependencies: 225
-- Name: categories_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
@ -61,7 +62,7 @@ ALTER SEQUENCE public.categories_id_seq OWNED BY public.categories.id;
--
-- TOC entry 225 (class 1259 OID 16573)
-- TOC entry 228 (class 1259 OID 32925)
-- Name: deletion_requests; Type: TABLE; Schema: public; Owner: postgres
--
@ -69,15 +70,15 @@ CREATE TABLE public.deletion_requests (
id integer NOT NULL,
object_id integer NOT NULL,
requested_by integer NOT NULL,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
status character varying(20) DEFAULT 'pending'::character varying
request_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
status character varying(50) DEFAULT 'pending'::character varying
);
ALTER TABLE public.deletion_requests OWNER TO postgres;
--
-- TOC entry 224 (class 1259 OID 16572)
-- TOC entry 227 (class 1259 OID 32924)
-- Name: deletion_requests_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
@ -93,8 +94,8 @@ CREATE SEQUENCE public.deletion_requests_id_seq
ALTER SEQUENCE public.deletion_requests_id_seq OWNER TO postgres;
--
-- TOC entry 3503 (class 0 OID 0)
-- Dependencies: 224
-- TOC entry 4964 (class 0 OID 0)
-- Dependencies: 227
-- Name: deletion_requests_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
@ -102,7 +103,7 @@ ALTER SEQUENCE public.deletion_requests_id_seq OWNED BY public.deletion_requests
--
-- TOC entry 215 (class 1259 OID 16468)
-- TOC entry 222 (class 1259 OID 32768)
-- Name: range_data; Type: TABLE; Schema: public; Owner: postgres
--
@ -120,27 +121,27 @@ CREATE TABLE public.range_data (
ALTER TABLE public.range_data OWNER TO postgres;
--
-- TOC entry 219 (class 1259 OID 16502)
-- TOC entry 224 (class 1259 OID 32789)
-- Name: users; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.users (
id integer NOT NULL,
name character varying(50) NOT NULL,
surname character varying(50) NOT NULL,
email character varying(100) NOT NULL,
name character varying(100) NOT NULL,
surname character varying(100) NOT NULL,
email character varying(255) NOT NULL,
gender character varying(10) NOT NULL,
password text NOT NULL,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
points integer DEFAULT 0,
CONSTRAINT users_gender_check CHECK (((gender)::text = ANY ((ARRAY['homme'::character varying, 'femme'::character varying])::text[])))
password character varying(255) NOT NULL,
created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
points integer DEFAULT 0 NOT NULL,
pseudo character varying(100)
);
ALTER TABLE public.users OWNER TO postgres;
--
-- TOC entry 218 (class 1259 OID 16501)
-- TOC entry 223 (class 1259 OID 32788)
-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
@ -156,8 +157,8 @@ CREATE SEQUENCE public.users_id_seq
ALTER SEQUENCE public.users_id_seq OWNER TO postgres;
--
-- TOC entry 3504 (class 0 OID 0)
-- Dependencies: 218
-- TOC entry 4965 (class 0 OID 0)
-- Dependencies: 223
-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
@ -165,27 +166,12 @@ ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id;
--
-- TOC entry 221 (class 1259 OID 16524)
-- Name: weather_data_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.weather_data_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.weather_data_id_seq OWNER TO postgres;
--
-- TOC entry 216 (class 1259 OID 16473)
-- TOC entry 221 (class 1259 OID 16479)
-- Name: weather_data; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.weather_data (
id integer DEFAULT nextval('public.weather_data_id_seq'::regclass) NOT NULL,
id integer NOT NULL,
station_id integer NOT NULL,
temperature numeric(5,2),
humidity numeric(5,2),
@ -199,11 +185,74 @@ CREATE TABLE public.weather_data (
ALTER TABLE public.weather_data OWNER TO postgres;
--
-- TOC entry 220 (class 1259 OID 16522)
-- TOC entry 220 (class 1259 OID 16478)
-- Name: weather_data_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.weather_data_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.weather_data_id_seq OWNER TO postgres;
--
-- TOC entry 4966 (class 0 OID 0)
-- Dependencies: 220
-- Name: weather_data_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
ALTER SEQUENCE public.weather_data_id_seq OWNED BY public.weather_data.id;
--
-- TOC entry 219 (class 1259 OID 16468)
-- Name: weather_objects; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.weather_objects (
id integer NOT NULL,
name character varying(500) NOT NULL,
description text,
type character varying(100) NOT NULL,
location character varying(255),
last_update timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
status character varying(50) DEFAULT 'active'::character varying,
batterie integer DEFAULT 100,
type_batterie character varying(50),
proprio_id integer,
CONSTRAINT weather_objects_batterie_check CHECK (((batterie >= 0) AND (batterie <= 100)))
);
ALTER TABLE public.weather_objects OWNER TO postgres;
--
-- TOC entry 217 (class 1259 OID 16466)
-- Name: weather_objects_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.weather_objects_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.weather_objects_id_seq OWNER TO postgres;
--
-- TOC entry 218 (class 1259 OID 16467)
-- Name: weather_objects_id_seq1; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.weather_objects_id_seq1
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@ -214,29 +263,16 @@ CREATE SEQUENCE public.weather_objects_id_seq1
ALTER SEQUENCE public.weather_objects_id_seq1 OWNER TO postgres;
--
-- TOC entry 217 (class 1259 OID 16477)
-- Name: weather_objects; Type: TABLE; Schema: public; Owner: postgres
-- TOC entry 4967 (class 0 OID 0)
-- Dependencies: 218
-- Name: weather_objects_id_seq1; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
CREATE TABLE public.weather_objects (
id integer DEFAULT nextval('public.weather_objects_id_seq1'::regclass) NOT NULL,
name character varying(500) NOT NULL,
description text,
type character varying(100) NOT NULL,
location character varying(255),
last_update timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
status character varying(50) DEFAULT 'active'::character varying,
batterie integer,
type_batterie character varying(50),
proprio_id integer,
CONSTRAINT weather_objects_batterie_check CHECK (((batterie >= 0) AND (batterie <= 100)))
);
ALTER SEQUENCE public.weather_objects_id_seq1 OWNED BY public.weather_objects.id;
ALTER TABLE public.weather_objects OWNER TO postgres;
--
-- TOC entry 3317 (class 2604 OID 16530)
-- TOC entry 4776 (class 2604 OID 32829)
-- Name: categories id; Type: DEFAULT; Schema: public; Owner: postgres
--
@ -244,7 +280,7 @@ ALTER TABLE ONLY public.categories ALTER COLUMN id SET DEFAULT nextval('public.c
--
-- TOC entry 3318 (class 2604 OID 16576)
-- TOC entry 4777 (class 2604 OID 32928)
-- Name: deletion_requests id; Type: DEFAULT; Schema: public; Owner: postgres
--
@ -252,7 +288,7 @@ ALTER TABLE ONLY public.deletion_requests ALTER COLUMN id SET DEFAULT nextval('p
--
-- TOC entry 3314 (class 2604 OID 16505)
-- TOC entry 4773 (class 2604 OID 32792)
-- Name: users id; Type: DEFAULT; Schema: public; Owner: postgres
--
@ -260,76 +296,79 @@ ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_
--
-- TOC entry 3494 (class 0 OID 16527)
-- Dependencies: 223
-- TOC entry 4771 (class 2604 OID 16482)
-- Name: weather_data id; Type: DEFAULT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.weather_data ALTER COLUMN id SET DEFAULT nextval('public.weather_data_id_seq'::regclass);
--
-- TOC entry 4767 (class 2604 OID 16471)
-- Name: weather_objects id; Type: DEFAULT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.weather_objects ALTER COLUMN id SET DEFAULT nextval('public.weather_objects_id_seq1'::regclass);
--
-- TOC entry 4955 (class 0 OID 32826)
-- Dependencies: 226
-- Data for Name: categories; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.categories (id, name) FROM stdin;
1 Station météo
2 Capteur
3 Passerelle
4 Anémomètre
5 Pluviomètre
6 Thermomètre
7 Hygromètre
1 station
2 capteur
\.
--
-- TOC entry 3496 (class 0 OID 16573)
-- Dependencies: 225
-- TOC entry 4957 (class 0 OID 32925)
-- Dependencies: 228
-- Data for Name: deletion_requests; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.deletion_requests (id, object_id, requested_by, created_at, status) FROM stdin;
1 2 1 2025-04-13 10:45:55.942399 pending
COPY public.deletion_requests (id, object_id, requested_by, request_date, status) FROM stdin;
\.
--
-- TOC entry 3486 (class 0 OID 16468)
-- Dependencies: 215
-- TOC entry 4951 (class 0 OID 32768)
-- Dependencies: 222
-- Data for Name: range_data; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.range_data (station_id, temperature_min, temperature_max, pressure_min, pressure_max, humidity_min, humidity_max) FROM stdin;
1 -33 42 980 1040 30 84
1 -33 33 980 1040 30 84
3 -15 39 980 1040 30 90
9 -15 49 980 1040 30 90
2 -15 50 980 1040 30 90
3 -15 50 980 1040 30 90
4 -15 50 980 1040 30 90
5 -15 50 980 1040 30 90
6 -15 50 980 1040 30 90
7 -15 50 980 1040 30 90
8 -15 50 980 1040 30 90
9 -15 50 980 1040 30 90
10 -15 50 980 1040 30 90
\.
--
-- TOC entry 3490 (class 0 OID 16502)
-- Dependencies: 219
-- TOC entry 4953 (class 0 OID 32789)
-- Dependencies: 224
-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.users (id, name, surname, email, gender, password, created_at, points) FROM stdin;
1 Jean Dupont jean.dupont@example.com homme hashed_password1 2025-03-31 15:15:17.203076 0
2 Marie Curie marie.curie@example.com femme hashed_password2 2025-03-31 15:15:17.203076 0
3 Albert Einstein albert.einstein@example.com homme hashed_password3 2025-03-31 15:15:17.203076 0
4 Alice Lemoine alice@example.com femme $2a$12$QNx7sC7VBXrU7QHFhU78vunLIU3C9KiVT2KyCJ5y6G0cdJB/k0YuC 2025-03-31 16:59:25.687126 0
15 azaz azeazae azeaze@azeaze femme $2a$12$YPEoDDRD/y2Zxh7mfTUWHuCgT9k3OlqwGWBPNpPx2yTSlfY4yHSka 2025-03-31 17:26:18.258471 0
16 El moudden Nassef nassmaghrebi@gmail.com homme $2a$12$f6Ovl48RsbipNNsEBcVjP.DGdCYPaxlHsZ2YexpeHDAXq4UzMK3hm 2025-04-01 15:34:05.987387 0
17 Declos Mathis md10022004@gmail.com homme $2a$12$/PufX/T..YU1Ze3yNYAkU.Ql8VqaBP7vmNXBK1Q8NniEA/Vqi37Qa 2025-04-02 11:12:36.427383 0
19 azeaze azeaze azeaze@aeaze.com femme $2a$12$vH.MxhvC/cJ02SNZSsr9SeHYy.JWoIFLKZGKVhUHLv7b9E1rm3Dam 2025-04-04 10:40:01.71072 0
20 Mendiburu Charles charles@gmail.com homme $2a$12$RPL.17dQ66kyZyfCST2EYePeDd/4iNhpr7hCpfBxJ7cROt/Lx1/zK 2025-04-11 19:06:41.216647 104
18 Mendiburu Charles charles.mendi1609@gmail.com homme $2a$12$PLowdJvo.jsnzbjE9CEccucGPE5XDn9kyn2nmyWWvh8eydT4827CS 2025-04-04 08:51:44.689425 226
COPY public.users (id, name, surname, email, gender, password, created_at, points, pseudo) FROM stdin;
9 complexe complexe complexe@gmail.com homme $2a$12$LC/9EhIC9z/5IF8y/SjFVuDWqeQbkkafhRtytNJ9VWIvx6lCgHDfq 2025-04-12 13:10:50.562087 100 complexe
7 admin admin admin@a.com homme $2a$12$cugJ4JNxHjL.GE0ONZlkVerXRlKGc3jtVNlo9qQrck1Kahgnz6Fj2 2025-04-11 21:08:47.705738 247 admin
10 user user user@gmail.com homme $2a$12$wja3M3Lc254Ooge7mE5hwuzHEP35YbVzMYYH6WXs5sKc2q4fvlBei 2025-04-12 14:18:22.728679 0 user
\.
--
-- TOC entry 3487 (class 0 OID 16473)
-- Dependencies: 216
-- TOC entry 4950 (class 0 OID 16479)
-- Dependencies: 221
-- Data for Name: weather_data; Type: TABLE DATA; Schema: public; Owner: postgres
--
@ -337,77 +376,117 @@ COPY public.weather_data (id, station_id, temperature, humidity, pressure, wind_
1 1 21.50 60.20 1013.10 5.40 Nord-Ouest 2025-03-29 18:47:46.685241
2 2 22.30 55.00 1012.50 3.20 Sud-Ouest 2025-03-29 18:47:46.685241
3 3 24.10 50.00 1010.80 6.00 Est 2025-03-29 18:47:46.685241
4 1 22.50 65.40 1013.20 5.50 Nord-Ouest 2025-04-12 01:33:17.747529
5 2 19.30 70.10 1012.80 4.70 Sud-Est 2025-04-12 01:33:17.747529
6 2 22.50 65.40 1013.20 5.50 Nord-Ouest 2025-04-12 01:34:04.077375
7 3 19.30 70.10 1012.80 4.70 Sud-Est 2025-04-12 01:34:04.077375
4 1 19.80 65.40 1014.00 4.50 Ouest 2025-03-29 18:47:46.685241
5 2 20.60 59.30 1013.50 2.80 Nord 2025-03-29 18:47:46.685241
6 1 22.50 60.00 1012.50 12.30 Nord-Ouest 2025-03-29 08:00:00
7 1 23.00 65.00 1013.25 14.00 Ouest 2025-03-29 09:00:00
8 1 24.00 70.00 1014.75 15.20 Nord 2025-03-29 10:00:00
9 2 21.50 55.00 1011.30 11.00 Sud 2025-03-29 08:30:00
10 2 22.00 60.00 1012.80 13.00 Est 2025-03-29 09:30:00
11 2 23.50 63.00 1013.50 14.50 Sud-Est 2025-03-29 10:30:00
12 3 26.00 58.00 1012.90 17.00 Ouest 2025-03-29 11:00:00
13 3 27.00 60.00 1014.00 18.50 Nord-Ouest 2025-03-29 12:00:00
14 3 28.00 62.00 1015.10 16.00 Nord 2025-03-29 13:00:00
15 4 19.50 75.00 1010.00 9.50 Sud-Ouest 2025-03-29 08:00:00
16 4 20.00 80.00 1010.50 10.00 Sud 2025-03-29 09:00:00
17 4 21.50 85.00 1011.00 11.50 Est 2025-03-29 10:00:00
18 5 18.00 90.00 1010.70 8.00 Ouest 2025-03-29 08:30:00
19 5 18.50 92.00 1011.20 7.00 Nord-Ouest 2025-03-29 09:30:00
20 5 19.00 95.00 1011.80 6.50 Nord 2025-03-29 10:30:00
21 6 24.50 65.00 1013.90 13.00 Sud 2025-03-29 11:00:00
22 6 25.00 66.00 1014.20 14.50 Ouest 2025-03-29 12:00:00
23 6 26.50 68.00 1015.50 16.00 Sud-Ouest 2025-03-29 13:00:00
24 7 21.00 60.00 1012.50 11.50 Est 2025-03-29 08:00:00
25 7 22.50 62.00 1013.00 12.00 Nord-Ouest 2025-03-29 09:00:00
26 7 23.00 64.00 1013.75 13.50 Sud-Est 2025-03-29 10:00:00
27 8 25.00 58.00 1012.10 16.50 Nord 2025-03-29 08:30:00
28 8 26.00 60.00 1013.30 17.50 Ouest 2025-03-29 09:30:00
29 8 27.00 62.00 1014.50 18.00 Sud-Ouest 2025-03-29 10:30:00
30 9 22.00 67.00 1011.40 14.00 Est 2025-03-29 11:00:00
31 9 23.00 69.00 1012.60 15.00 Nord-Ouest 2025-03-29 12:00:00
32 9 24.00 72.00 1013.80 16.00 Nord 2025-03-29 13:00:00
33 10 18.00 55.00 1010.20 10.00 Ouest 2025-03-29 08:00:00
34 10 19.00 58.00 1011.00 11.50 Sud-Ouest 2025-03-29 09:00:00
35 10 20.00 60.00 1011.70 12.50 Est 2025-03-29 10:00:00
\.
--
-- TOC entry 3488 (class 0 OID 16477)
-- Dependencies: 217
-- TOC entry 4948 (class 0 OID 16468)
-- Dependencies: 219
-- Data for Name: weather_objects; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.weather_objects (id, name, description, type, location, last_update, status, batterie, type_batterie, proprio_id) FROM stdin;
2 Station Lyon Station météo située à Lyon, France. station Lyon, France 2025-03-30 12:16:00.835834 active 100 solaire \N
4 Station Alpha Station météo dans le centre-ville station_meteo Paris 2025-04-12 01:32:19.680121 active 80 Li-Ion 1
5 Station Beta Station météo sur la montagne station_meteo Alpes 2025-04-12 01:32:19.680121 active 60 NiMH 2
6 Station Gamma Station météo près de la mer station_meteo Nice 2025-04-12 01:32:19.680121 active 90 Li-Ion 3
1 Station Paris Station météo située à Paris, France. station Paris, France 2025-04-12 01:36:03.306108 inactive 100 solaire \N
3 Station Marseille Station météo située à Marseille, France. station Marseille, France 2025-04-12 01:36:32.314423 active 100 solaire \N
7 Station Meteo Charles Station meteo de charles station meteo Capbreton 2025-04-12 09:29:48.565373 active \N Solaire 18
3 Station Marseille Station météo située à Marseille, France. Mesures de température, humidité, pression et vent. station Marseille, France 2025-03-30 17:01:10.631653 inactive 100 solaire 7
4 Capteur Bordeaux Capteur de température et d'humidité à Bordeaux. capteur Bordeaux, France 2025-03-30 17:53:01.42853 active 100 solaire 7
5 Capteur Lille Capteur de pression atmosphérique à Lille. capteur Lille, France 2025-03-31 21:32:04.955306 inactive 100 solaire 7
6 Capteur Nantes Capteur de vent à Nantes. capteur Nantes, France 2025-03-30 20:10:18.547523 active 100 solaire 7
7 Station Toulouse Station météo à Toulouse mesurant la température, l'humidité, la pression et la vitesse du vent. station Toulouse, France 2025-04-02 15:43:34.803703 active 100 solaire 7
10 Capteur Paris Sud Capteur de température et humidité à Paris Sud. capteur Paris, France 2025-04-02 23:09:38.725522 inactive 100 solaire 7
8 Capteur Grenoble Capteur de température à Grenoble. capteur Grenoble, France 2025-04-04 10:40:08.247433 active 100 solaire 7
1 Station Paris Station météo située à Paris, France. Mesures de température, humidité, pression et vent. station Paris, France 2025-04-11 10:40:57.350173 active 100 solaire 7
2 Station Lyon Station météo située à Lyon, France. Mesures de température, humidité, pression et vent. station Lyon, France 2025-04-11 23:08:56.344369 inactive 100 solaire 7
9 Station Nice Station météo située à Nice, France. Elle mesure la température, l'humidité et la pression. station Nice, France 2025-04-13 19:26:43.601141 active 100 solaire 7
\.
--
-- TOC entry 3505 (class 0 OID 0)
-- Dependencies: 222
-- TOC entry 4968 (class 0 OID 0)
-- Dependencies: 225
-- Name: categories_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.categories_id_seq', 7, true);
SELECT pg_catalog.setval('public.categories_id_seq', 9, true);
--
-- TOC entry 3506 (class 0 OID 0)
-- Dependencies: 224
-- TOC entry 4969 (class 0 OID 0)
-- Dependencies: 227
-- Name: deletion_requests_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.deletion_requests_id_seq', 1, true);
SELECT pg_catalog.setval('public.deletion_requests_id_seq', 31, true);
--
-- TOC entry 3507 (class 0 OID 0)
-- Dependencies: 218
-- TOC entry 4970 (class 0 OID 0)
-- Dependencies: 223
-- Name: users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.users_id_seq', 20, true);
SELECT pg_catalog.setval('public.users_id_seq', 14, true);
--
-- TOC entry 3508 (class 0 OID 0)
-- Dependencies: 221
-- TOC entry 4971 (class 0 OID 0)
-- Dependencies: 220
-- Name: weather_data_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.weather_data_id_seq', 7, true);
SELECT pg_catalog.setval('public.weather_data_id_seq', 35, true);
--
-- TOC entry 3509 (class 0 OID 0)
-- Dependencies: 220
-- TOC entry 4972 (class 0 OID 0)
-- Dependencies: 217
-- Name: weather_objects_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.weather_objects_id_seq', 1, false);
--
-- TOC entry 4973 (class 0 OID 0)
-- Dependencies: 218
-- Name: weather_objects_id_seq1; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.weather_objects_id_seq1', 7, true);
SELECT pg_catalog.setval('public.weather_objects_id_seq1', 44, true);
--
-- TOC entry 3334 (class 2606 OID 16536)
-- TOC entry 4792 (class 2606 OID 32835)
-- Name: categories categories_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -416,7 +495,7 @@ ALTER TABLE ONLY public.categories
--
-- TOC entry 3336 (class 2606 OID 16534)
-- TOC entry 4794 (class 2606 OID 32833)
-- Name: categories categories_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -425,7 +504,7 @@ ALTER TABLE ONLY public.categories
--
-- TOC entry 3338 (class 2606 OID 16580)
-- TOC entry 4796 (class 2606 OID 32932)
-- Name: deletion_requests deletion_requests_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -434,7 +513,7 @@ ALTER TABLE ONLY public.deletion_requests
--
-- TOC entry 3324 (class 2606 OID 16486)
-- TOC entry 4786 (class 2606 OID 32774)
-- Name: range_data station_meteo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -443,7 +522,7 @@ ALTER TABLE ONLY public.range_data
--
-- TOC entry 3330 (class 2606 OID 16514)
-- TOC entry 4788 (class 2606 OID 32799)
-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -452,7 +531,7 @@ ALTER TABLE ONLY public.users
--
-- TOC entry 3332 (class 2606 OID 16512)
-- TOC entry 4790 (class 2606 OID 32797)
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -461,7 +540,7 @@ ALTER TABLE ONLY public.users
--
-- TOC entry 3326 (class 2606 OID 16488)
-- TOC entry 4784 (class 2606 OID 16485)
-- Name: weather_data weather_data_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -470,7 +549,7 @@ ALTER TABLE ONLY public.weather_data
--
-- TOC entry 3328 (class 2606 OID 16490)
-- TOC entry 4782 (class 2606 OID 16477)
-- Name: weather_objects weather_objects_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
@ -479,42 +558,42 @@ ALTER TABLE ONLY public.weather_objects
--
-- TOC entry 3341 (class 2606 OID 16586)
-- Name: deletion_requests fk_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres
-- TOC entry 4799 (class 2606 OID 32933)
-- Name: deletion_requests deletion_requests_object_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.deletion_requests
ADD CONSTRAINT fk_user FOREIGN KEY (requested_by) REFERENCES public.users(id) ON DELETE CASCADE;
ADD CONSTRAINT deletion_requests_object_id_fkey FOREIGN KEY (object_id) REFERENCES public.weather_objects(id) ON DELETE CASCADE;
--
-- TOC entry 3342 (class 2606 OID 16581)
-- Name: deletion_requests fk_weather_object; Type: FK CONSTRAINT; Schema: public; Owner: postgres
-- TOC entry 4800 (class 2606 OID 32938)
-- Name: deletion_requests deletion_requests_requested_by_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.deletion_requests
ADD CONSTRAINT fk_weather_object FOREIGN KEY (object_id) REFERENCES public.weather_objects(id) ON DELETE CASCADE;
ADD CONSTRAINT deletion_requests_requested_by_fkey FOREIGN KEY (requested_by) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- TOC entry 3339 (class 2606 OID 16491)
-- TOC entry 4797 (class 2606 OID 32820)
-- Name: weather_objects fk_proprio; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.weather_objects
ADD CONSTRAINT fk_proprio FOREIGN KEY (proprio_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- TOC entry 4798 (class 2606 OID 32836)
-- Name: weather_data weather_data_station_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.weather_data
ADD CONSTRAINT weather_data_station_id_fkey FOREIGN KEY (station_id) REFERENCES public.weather_objects(id);
ADD CONSTRAINT weather_data_station_id_fkey FOREIGN KEY (station_id) REFERENCES public.weather_objects(id) ON DELETE CASCADE;
--
-- TOC entry 3340 (class 2606 OID 16517)
-- Name: weather_objects weather_objects_proprio_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.weather_objects
ADD CONSTRAINT weather_objects_proprio_id_fkey FOREIGN KEY (proprio_id) REFERENCES public.users(id) ON DELETE CASCADE;
-- Completed on 2025-04-13 11:04:16 CEST
-- Completed on 2025-04-13 23:02:36
--
-- PostgreSQL database dump complete