Un client TUI de terminal basé sur Rust qui transforme la manière dont les développeurs interagissent avec Postgres en permettant l'édition directe des enregistrements de base de données via des éditeurs de texte familiers, avec manipulation des données basée sur TOML et des opérations CRUD complètes.
Lorsque j’ai eu l’idée pour la première fois il y a quelques années, cela semblait presque trop simple : écrire en markdown, enregistrer dans une base de données. La vision était claire - utiliser votre éditeur de texte favori pour créer du contenu, puis faire parser ce contenu et le stocker dans une base de données afin de bénéficier de tous les avantages du stockage de données structuré. C’était ainsi que je voulais interagir avec les bases de données, en particulier pour les articles de blog et les contenus similaires où l’expérience d’écriture compte autant que la structure des données.
Cette étincelle initiale a évolué, sans toutefois changer radicalement. Le format est passé de markdown à TOML, même si le principe reste identique - vous pourriez utiliser du markdown, du HTML, du texte brut ou pratiquement n’importe quel format dans la structure TOML. En fait, c’est exactement ainsi que je rédige ce passage. L’idée centrale perdure : rendre l’interaction avec la base de données aussi naturelle que l’écriture dans un éditeur de texte.
Le passage du concept à la réalité a été conséquent. Ce qui en est ressorti, c’est pgtui, un client TUI pour Postgres écrit en Rust qui transforme la manière dont les développeurs interagissent avec leurs bases de données grâce à une interface basée sur le terminal. Depuis sa première version 0.1 en avril 2025 - qui était essentiellement un simple placeholder - le projet a considérablement mûri, avec de nombreuses fonctionnalités ajoutées et d’innombrables bogues résolus.
L’un des aspects les plus difficiles a été de résoudre la conversion bidirectionnelle entre TOML et les types Postgres. Cela s’est révélé être un domaine de problème complexe où sqlx est devenu une dépendance indispensable, prenant en charge une grande partie du travail lourd pour les conversions de types et les interactions avec la base de données. La crate toml a fourni des capacités d’analyse robustes, tandis que ratatui a constitué la base de l’interface utilisateur terminale, permettant l’expérience riche et interactive qui définit pgtui.
Fonctionnalités et capacités principales
Le client offre un ensemble complet de fonctionnalités conçues pour rendre l’interaction avec la base de données intuitive et efficace :
Navigation dans la base de données : Parcourez toutes les relations non système d’une base de données connectée, avec des capacités de tri et de filtrage pour localiser rapidement des tables ou des vues spécifiques. Cela offre une visibilité immédiate sur la structure de votre base de données sans quitter le terminal.
Inspection du schéma : Affichez des définitions et des descriptions détaillées des relations. Fait intéressant, cette fonctionnalité repose encore sur psql pour récupérer les informations de schéma, même si je travaille activement à éliminer cette dépendance dans les versions futures. L’objectif est de rendre pgtui totalement autonome.
Consultation des données : Naviguez dans des données de table paginées avec la prise en charge du tri par n’importe quelle colonne. Cela facilite l’exploration de grands ensembles de données sans surcharger l’interface du terminal.
Filtrage avancé : Écrivez des clauses SQL WHERE pour filtrer les données affichées, offrant de puissantes capacités de requête directement dans le TUI. Cette fonctionnalité, démontrée dans la capture d’écran jointe, montre comment les utilisateurs peuvent construire des filtres complexes pour isoler des enregistrements spécifiques.
Création d’enregistrements : Insérez de nouveaux enregistrements dans les tables en utilisant votre éditeur de terminal préféré. C’est là que pgtui brille vraiment - vous éditez des enregistrements de base de données exactement dans le même environnement que celui que vous utiliseriez pour tout autre travail textuel.
Modification d’enregistrements : Modifiez des enregistrements existants avec la possibilité d’abandonner les changements à mi-parcours du processus d’édition. Cette approche d’édition sur place, montrée dans une autre capture d’écran, conserve le flux de travail familier d’un éditeur de texte tout en manipulant le contenu de la base de données.
Mode lecture seule : Ouvrez des enregistrements en mode lecture seule lorsque vous devez consulter des données sans risque de modification accidentelle.
Suppression d’enregistrements : Supprimez des enregistrements avec des confirmations intégrées obligatoires, ajoutant une couche de sécurité pour éviter les pertes de données accidentelles.
Prise en charge des clés primaires sur plusieurs colonnes : Gérez des structures de table complexes avec des clés primaires composites, en vous assurant que pgtui fonctionne avec une grande variété de schémas de bases de données.
Gestion des connexions : Stockez les configurations de connexion à la base de données dans un fichier et basculez entre elles de manière fluide au sein du client, ce qui facilite le travail avec plusieurs bases de données ou environnements.
Aide interactive : Affichez tous les contrôles et commandes disponibles, réduisant la courbe d’apprentissage et rendant l’outil accessible à des utilisateurs d’expérience variée.
Le parcours de développement
L’évolution de ce concept initial vers la version actuelle 0.10.0 représente d’innombrables heures de développement consacrées à la résolution de problèmes réels d’interaction avec les bases de données. La décision d’utiliser Rust a apporté des avantages en matière de performances et des garanties de sécurité mémoire, tandis que le choix de TOML comme format intermédiaire a trouvé un équilibre entre lisibilité humaine et analysabilité par machine.
Ce qui rend pgtui particulièrement convaincant, c’est la façon dont il relie deux mondes qui restent généralement séparés - l’environnement créatif et libre de l’édition de texte et le monde structuré et contraint des bases de données relationnelles. En permettant aux utilisateurs de manipuler des enregistrements de base de données via leurs éditeurs de texte préférés, pgtui supprime une grande partie des frictions qui accompagnent habituellement les opérations sur base de données.
Perspectives
L’implémentation actuelle, bien que riche en fonctionnalités, continue d’évoluer. L’objectif immédiat est d’éliminer la dépendance restante à psql pour l’inspection du schéma, ce qui ferait de pgtui une solution véritablement autonome. Au-delà de cela, la feuille de route inclut probablement des capacités de requête améliorées, de meilleures options de visualisation des données et potentiellement une prise en charge élargie d’autres systèmes de bases de données.
Pour les développeurs qui passent beaucoup de temps à travailler avec des bases de données Postgres, en particulier ceux qui apprécient l’efficacité et la familiarité des outils basés sur le terminal, pgtui représente une solution réfléchie à un problème de flux de travail courant. Ce n’est pas simplement un client de base de données de plus - c’est une tentative de réimaginer la manière dont nous concevons la frontière entre création de contenu et stockage de données.
Pour ceux qui souhaitent essayer pgtui, des instructions complètes d’utilisation et d’installation sont disponibles dans le README du projet, ainsi que du matériel de démonstration montrant l’interface en action. Le projet incarne une philosophie selon laquelle les bons outils devraient s’adapter à la manière naturelle de travailler des gens, plutôt que de forcer les utilisateurs à s’adapter aux limites de l’outil.

Commentaires
Connectez-vous ou inscrivez-vous pour participer à la discussion