DEV Community

Cover image for Jarvis, génère moi un schéma de base de données
Vincent
Vincent

Posted on

Jarvis, génère moi un schéma de base de données

Petit disclaimer avant de commencer ce post. L’IA est un outil très puissant d’assistance mais pour le moment nous ne pouvons pas lui déléguer l’entière responsabilité du travail. Alors je vous incite fortement à vérifier tout le contenu généré par une IA. Bonne lecture !

Je viens de découvrir un outil très intéressant qui peut vous assister dans la création de vos schémas de base de données Postgres. Cet outil c’est postgres.new !

Voici le lien vers le repository du projet https://github.com/supabase-community/postgres-newet le lien vers l’interface https://postgres.new/.

postgres.new c’est quoi ?

postgres.new est un outil gratuit de création de base de données PostgreSQL par IA développé par Supabase.

Supabase logo

PostgreSQL logo

L’interface ressemble à tous les assistant d’IA avec la liste des contextes de génération à gauche, au milieu le contenu qui est généré et à droite la barre de prompt permettant de faire des requêtes.

Interface de postgres.new

Comment ça marche sous le capot ?

PostgresNew peut fonctionner uniquement dans le navigateur car il est construit par-dessus PGLite https://pglite.dev/ (développé par ElectricSQL) qui est une version Web Assembly de Postgres offrant une compatibilité navigateur web.

Ainsi, il est possible de créer une base de données Postgres, faire des requêtes et stocker la base de données, tout cela au sein du navigateur. Par défaut, la base est stocker via l’indexedDB du navigateur permettant de persister les données au rafraichissement.

Quelles sont les fonctionnalités ?

Importer des données

Il est possible de drag and drop un fichier CSV dans la console de prompt. L’agent va reconnaitre le fichier, l’importer et créer une table en analysant le contenu du fichier.

Voici un exemple de fichier CSV représentant le taux de natalité en fonction de l’âge des femmes sur la période 2005 / 2022.

Voici un extrait du fichier CSV :

extrait du fichier csv

Et voici la table que postgres.new a généré :

Table births_by_mothers_age

Le script de migration qui permet de créer la table est accessible dans l’onglet Migrations.

script de migration

Demander des informations sur le jeu de données

Il est possible de faire des requêtes en s’adressant directement à l’agent. Par exemple, je demande la catégorie d’âge qui a le plus d’enfant, l’agent est capable de répondre que c’est la tranche des 30/34ans qui est la plus propice aux naissances.

requête de données

Représenter des données

Il est possible de demander une représentation graphique des données. Ici, je demande de me représenter les 4 groupes d’âge qui ont le plus d’enfant. L’agent me représente dans un diagramme à barre les données que je lui demande. C’est assez bluffant !

diagramme barre qui représente les données

On peut lui demander d’afficher les mêmes données dans un diagramme circulaire.

diagramme circulaire qui représente les données

Créer un schéma from scratch

Il est possible de décrire un besoin ou une fonctionnalité et l’agent se charge de créer un schéma capable de répondre à la demande.

Par exemple si je lui demande de réaliser un schéma qui clone une application telle que Twitter, l’agent me créer le schéma suivant :

Schéma de base de données MVP Twitter

On a également une description de toutes les tables.

Description des tables générées

Ici, on a bien un schéma minimal permettant de reproduire le comportement du MVP de Twitter (ou X).

Voici à quoi ressemble le script de migration :

-- Migrations will appear here as you chat with AI

create table users (
  id bigint primary key generated always as identity,
  username text unique not null,
  email text unique not null,
  password_hash text not null,
  created_at timestamp with time zone default now(),
  bio text,
  location text
);

create table tweets (
  id bigint primary key generated always as identity,
  user_id bigint references users (id) on delete cascade,
  content text not null,
  created_at timestamp with time zone default now()
);

create table followers (
  follower_id bigint references users (id) on delete cascade,
  followee_id bigint references users (id) on delete cascade,
  primary key (follower_id, followee_id)
);

create table likes (
  user_id bigint references users (id) on delete cascade,
  tweet_id bigint references tweets (id) on delete cascade,
  primary key (user_id, tweet_id)
);

create table retweets (
  user_id bigint references users (id) on delete cascade,
  tweet_id bigint references tweets (id) on delete cascade,
  created_at timestamp with time zone default now(),
  primary key (user_id, tweet_id)
);-- Migrations will appear here as you chat with AI

create table users (
  id bigint primary key generated always as identity,
  username text unique not null,
  email text unique not null,
  password_hash text not null,
  created_at timestamp with time zone default now(),
  bio text,
  location text
);

create table tweets (
  id bigint primary key generated always as identity,
  user_id bigint references users (id) on delete cascade,
  content text not null,
  created_at timestamp with time zone default now()
);

create table followers (
  follower_id bigint references users (id) on delete cascade,
  followee_id bigint references users (id) on delete cascade,
  primary key (follower_id, followee_id)
);

create table likes (
  user_id bigint references users (id) on delete cascade,
  tweet_id bigint references tweets (id) on delete cascade,
  primary key (user_id, tweet_id)
);

create table retweets (
  user_id bigint references users (id) on delete cascade,
  tweet_id bigint references tweets (id) on delete cascade,
  created_at timestamp with time zone default now(),
  primary key (user_id, tweet_id)
);
Enter fullscreen mode Exit fullscreen mode

Modifier le schéma généré

Il est possible de modifier le schéma généré en demandant directement à l’agent via la console de prompt, soit en passant par l’interface qui permet quelque manipulation.

Admettons que je veuille que la bio de la table users ne soit jamais nul, alors je peux cliquer sur la colonne et sélectionner “rendre non nul”.

Menu d'action sur une colonne

L’agent nous informe que la demande à bien été prise en compte.

Prise en compte de la demande par l'agent

Les nouvelles lignes permettant la migration sont ajoutées dans le script de migration.

alter table users
alter column bio
set not null;
Enter fullscreen mode Exit fullscreen mode

Conclusion

Ce post s’appuie sur la vidéo de démonstration de postgres.new. Je vous conseille d’aller la regarder ! https://www.youtube.com/watch?v=ooWaPVvljlU

On commence à banaliser la capacité des IA mais aurait-on cru que tous ces progrès arriveraient si vite ? Personnellement ça me bluff! Toutefois comme je l’ai dit en introduction, il est primordial de vérifier un minimum ce que l’IA fait.

Pour résumé, PostgresNew c’est un assistant de création et de manipulation de base de données Postgres. Il permet de gagner pas mal de temps pour la construction ou l’analyse de données.

De mon côté, je vais continuer de jouer avec et j’ai hâte de voir le futur de ce projet !

Top comments (0)