gobang - A cross-platform TUI database management tool written in Rust

Overview

gobang

gobang is currently in alpha

A cross-platform TUI database management tool written in Rust

github workflow status crates

gobang

Features

  • Cross-platform support (macOS, Windows, Linux)
  • Multiple Database support (MySQL, PostgreSQL, SQLite)
  • Intuitive keyboard only control

TODOs

  • SQL editor
  • Custom key bindings
  • Custom theme settings
  • Support the other databases

Installation

Homebrew (Linux/macOS)

If you’re using Homebrew or Linuxbrew, install the gobang formula:

$ brew install tako8ki/tap/gobang

Cargo (Linux/macOS/Windows)

If you already have a Rust environment set up, you can use the cargo install command:

$ cargo install --version 0.1.0-alpha.3 gobang

Using a release binary (Linux/macOS/Windows)

Usage

$ gobang
$ gobang -h
USAGE:
    gobang [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --config-path     Set the config file

If you want to add connections, you need to edit your config file. For more information, please see Configuration.

Keymap

Key Description
h, j, k, l Scroll left/down/up/right
Ctrl + u, Ctrl + d Scroll up/down multiple lines
g , G Scroll to top/bottom
H, J, K, L Extend selection by one cell left/down/up/right
y Copy a cell value
, Move focus to left/right
c Move focus to connections
/ Filter
? Help
1, 2, 3, 4, 5 Switch to records/columns/constraints/foreign keys/indexes tab

Configuration

The location of the file depends on your OS:

  • macOS: $HOME/.config/gobang/config.toml
  • Linux: $HOME/.config/gobang/config.toml
  • Windows: %APPDATA%/gobang/config.toml

The following is a sample config.toml file:

[[conn]]
type = "mysql"
user = "root"
host = "localhost"
port = 3306

[[conn]]
type = "mysql"
user = "root"
host = "localhost"
port = 3306
password = "password"
database = "foo"

[[conn]]
type = "postgres"
user = "root"
host = "localhost"
port = 5432
database = "bar"

[[conn]]
type = "sqlite"
path = "/path/to/baz.db"

Contribution

Contributions, issues and pull requests are welcome!

Comments
  • Question: Error returned when using filter with PostgreSQL

    Question: Error returned when using filter with PostgreSQL

    When using Gobang with PostgreSQL, I encounter the error

    error returned from database: LIMIT #, # syntax is not supported
    

    The screenshot below described my error.

    My table sec_modules contain the column id. And I type the filter expression id = 23, when press "Enter", I got the error.

    Screenshot of the error: image

    I'm using Gobang installed from "gobang-0.1.0-alpha.3-x86_64-pc-windows-msvc.zip", Windows 10, and PostgreSQL 13.2.

    Is there any syntax error with my filter expression? Thanks.

    bug question 
    opened by jhhom 3
  • Adding help and README for exit pop up key

    Adding help and README for exit pop up key

    This PR adds a description for exit pop up.

    I noticed that the key to close the popup (Esc) exists but is not in the help.

    Thank you in advance.

    changelog: Adding help for exit pop up.

    スクリーンショット 2022-04-11 14 21 36
    opened by kyoto7250 0
  • Fix JSON conversion of the table name which is also a keyword for PostgreSQL

    Fix JSON conversion of the table name which is also a keyword for PostgreSQL

    Hi all :wave: Similarly to escape the table name in the SELECT command query, here we escape the table name with apostrophes. In fact, to_json() raised a "Syntax error" for table that uses a keyword as its name.

    An example is a table named order.

    opened by dcariotti 0
  • Fix tiny bug in checking whether a SQL statement is a SELECT statement or not

    Fix tiny bug in checking whether a SQL statement is a SELECT statement or not

    changelog: none

    In checking whether a SQL statement is a SELECT statement or not, Only cases beginning with SELECT or select were considered to be SELECT statements, so we changed the check to be case-insensitive.

    opened by mi-wada 0
  • feature connection alias

    feature connection alias

    closes #105

    Hi, I'm beginner by rust, but I like this project so I tried this issue.

    1. Load value of name from config.toml.
    2. Check if name exists, and if so returns [{name}] postgres://... else returns the same value as before.
    opened by susiyaki 0
  • Expand tilde and environment variables in path field

    Expand tilde and environment variables in path field

    closes #104

    [[conn]]
    type = "sqlite"
    path = "$HOME/Downloads/chinook.db"
    
    [[conn]]
    type = "sqlite"
    path = "~/Downloads/chinook.db"
    
    opened by TaKO8Ki 0
  • Add the way to install gobang on NetBSD to README

    Add the way to install gobang on NetBSD to README

    Discussed in https://github.com/TaKO8Ki/gobang/discussions/116

    Originally posted by 0323pin September 17, 2021 FYI, I've packaged gobang for NetBSD and merged it into the main branch. https://pkgsrc.se/databases/gobang

    Regards, pin

    opened by TaKO8Ki 0
  • pool timed out while waiting for an open connection

    pool timed out while waiting for an open connection

    Discussed in https://github.com/TaKO8Ki/gobang/discussions/110

    Originally posted by ac5tin September 15, 2021 i just installed gobang using cargo install --version 0.1.0-alpha.4 gobang

    i've edited the config.toml

    [[conn]]
    type = "postgres"
    user = "xxxxxxx"
    host = "xxxxxxxxxx.us-east-1.rds.amazonaws.com"
    port = 5432
    database = "fastapg"
    

    When i launch gobang and then select the connection i see the error. 2021-09-15-163059_531x179_scrot

    opened by TaKO8Ki 0
  • Document `name` config field

    Document `name` config field

    hi, thought it would be worth using name in a couple of the example config fields

    This would require a new release though, since the latest release predates #105

    Thanks for the cool project :)

    changelog: document name config field

    opened by zdog234 0
  • Feature request: Prompt for password

    Feature request: Prompt for password

    I don't want to write the password for the production DB in plain text into a file for security reasons.

    Instead I'd like to enter it into a prompt when having selected a DB connection.

    This could be the default if the password field in the config file is empty.

    opened by pylipp 0
  • Unable to select a table called

    Unable to select a table called "user"

    I have a postgres database with a user table, whenever I try to select it an error screen pops up with error returned from database: syntax error at or near ".". Maybe something to do with the table name?

    opened by nyonson 1
  • add option for using unix_domain_socket

    add option for using unix_domain_socket

    in local hosts, UDS connections are faster than TCP, so we should support UDS.

    close #151

    TODO

    • [x] mysql
    • [x] postgres
    • [x] add tests

    Thanks for your time to review.

    changelog: support connecting unix domain socket

    opened by kyoto7250 0
  • mask database password on the initial page

    mask database password on the initial page

    close #156

    This PR will hide the password on the first selection screen. The password is written in the config file, so it is not necessary to see it at the time of selection.

    Thank you in advance.

    スクリーンショット 2022-05-31 8 27 56

    opened by kyoto7250 0
Releases(v0.1.0-alpha.5)
Owner
Takayuki Maeda
Software Engineer?
Takayuki Maeda
A high level async Redis client for Rust built on Tokio and Futures.

A high level async Redis client for Rust built on Tokio and Futures.

Alec Embke 108 Jan 1, 2023
A MongoDB ODM for Rust based on Mongoose

Nongoose MongoDB ODM for Rust based on Mongoose Basic usage use mongodb::{bson::oid::ObjectId, sync::Client}; use nongoose::Schema; use serde::{Deseri

NextChat 9 Nov 8, 2022
A cross-platform terminal database tool written in Rust

gobang is currently in alpha A cross-platform terminal database tool written in Rust Features Cross-platform support (macOS, Windows, Linux) Mu

Takayuki Maeda 2.1k Jan 5, 2023
Zap - A simple cross-platform configuration management and orchestration tool

Zap - A simple cross-platform orchestration and configuration management tool. The main goal for Zap is to a simple mechanism for managing groups of com

R. Tyler Croy 50 Oct 29, 2022
A simple cross-platform remote file management tool to upload and download files over HTTP/S

A simple cross-platform remote file management tool to upload and download files over HTTP/S

sexnine 13 Dec 30, 2022
Cross-platform, cross-browser, cross-search-engine duckduckgo-like bangs

localbang Cross-platform, cross-browser, cross-search-engine duckduckgo-like bangs What are "bangs"?? Bangs are a way to define where to search inside

Jakob Kruse 7 Nov 23, 2022
An opinionated, monolithic template for Bevy with cross-platform CI/CD, native + WASM launchers, and managed cross-platform deployment.

??️ Bevy Shell - Template An opinionated, monolithic template for Bevy with cross-platform CI/CD, native + WASM launchers, and managed cross-platform

Kurbos 218 Dec 30, 2022
A Distributed SQL Database - Building the Database in the Public to Learn Database Internals

Table of Contents Overview Usage TODO MVCC in entangleDB SQL Query Execution in entangleDB entangleDB Raft Consensus Engine What I am trying to build

Sarthak Dalabehera 38 Jan 2, 2024
A simple, TUI git management tool

Gitten Gitten is git project manager with multiple repositories. With gitten you can check out to new branches and tag branches from you active. Prere

Hamza Oral 12 Mar 31, 2023
Cross-platform Secure TUI Secret Locker

SafeCloset keeps your secrets in password protected files. SafeCloset is designed to be convenient and avoid common weaknesses like external editing o

Canop 63 Dec 26, 2022
Cross-platform Secure TUI Secret Locker

SafeCloset keeps your secrets in password protected files. SafeCloset is designed to be convenient and avoid common weaknesses like external editing or temporary files written on disk.

Canop 63 Dec 26, 2022
A template for bootstrapping a Rust TUI application with tui-rs & crossterm

rust-tui-template A template for bootstrapping a Rust TUI application with tui-rs & crossterm. tui-rs The library is based on the principle of immedia

Orhun Parmaksız 72 Dec 31, 2022
ReefDB is a minimalistic, in-memory and on-disk database management system written in Rust, implementing basic SQL query capabilities and full-text search.

ReefDB ReefDB is a minimalistic, in-memory and on-disk database management system written in Rust, implementing basic SQL query capabilities and full-

Sacha Arbonel 75 Jun 12, 2023
TUI for crate management like lazydocker and lazynpm

TUI for crate management like lazydocker and lazynpm. Shouldve named it as lazycargo but lazycrates sounded good at that time.

Aquib 9 Dec 8, 2022
This is a `Rust` based package to help with the management of complex medicine (pill) management cycles.

reepicheep This is a Rust based package to help with the management of complex medicine (pill) management cycles. reepicheep notifies a person(s) via

Daniel B 24 Dec 13, 2023
Fusion is a cross-platform App Dev ToolKit build on Rust . Fusion lets you create Beautiful and Fast apps for mobile and desktop platform.

Fusion is a cross-platform App Dev ToolKit build on Rust . Fusion lets you create Beautiful and Fast apps for mobile and desktop platform.

Fusion 1 Oct 19, 2021
Kepler is a vulnerability database and lookup store and API currently utilising National Vulnerability Database and NPM Advisories as data sources

Kepler — Kepler is a vulnerability database and lookup store and API currently utilising National Vulnerability Database and NPM Advisories as data so

Exein.io 101 Nov 12, 2022
Habitat is open source software that creates platform-independent build artifacts and provides built-in deployment and management capabilities.

Habitat is open source software that creates platform-independent build artifacts and provides built-in deployment and management capabilities. The go

Habitat 2.4k Dec 27, 2022