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
  • 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 I want to 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 103 Nov 30, 2022
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
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 11 Oct 31, 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 Dec 2, 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 214 Nov 25, 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 o

Canop 62 Nov 20, 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 62 Nov 20, 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 70 Nov 10, 2022
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 8 Oct 30, 2022
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
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 1, 2022
Like pigz, but rust - a cross platform, fast, compression and decompression tool.

?? crabz Like pigz, but rust. A cross platform, fast, compression and decompression tool. Synopsis This is currently a proof of concept CLI tool using

Seth 229 Nov 18, 2022
Cross-platform tool to update DNS such as Gandi.net with your dynamic IP address

GDU | Generic DNS Update A cross-platform tool to update DNS zonefiles (such as Gandi.net) when you have a dynamic public IP address. It's a DynDNS or

Damien Lecan 10 Jan 20, 2022
A cross platform tool which instantly notifies about COVID vaccine availability.

?? CoWIN Notifier ?? A cross-platform tool written in rust, which instantly notifies users about COVID-19 vaccine availability at their regions. Curre

Sanskar Jaiswal 20 May 20, 2021
Cross platform community web fingerprint identification tool

ObserverWard_0x727 English | 中文简体 category describe author 三米前有蕉皮 team 0x727 Open source tools will be available in the future. what for? Communalizat

0x727 510 Nov 26, 2022
This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updates

CSHP This is a cross-platform tool to historicize different branches/depots/manifests and generating pseudocode for it to compare different game updat

raizo 6 Jan 28, 2022
Git Explorer: cross-platform git workflow improvement tool inspired by Magit

Gex Git workflow improvement CLI tool inspired by Magit. This project is still under initial development, but I am actively dogfooding it and features

Peter Hebden 192 Nov 14, 2022