Interactive client for PostgreSQL and MySQL

Overview

dblab

Interactive client for PostgreSQL and MySQL.

Release integration tests unit tests

Overview

dblab is a fast and lightweight interactive terminal based UI application for PostgreSQL and MySQL, written in Go and works on OSX, Linux and Windows machines. Main idea behind using Go for backend development is to utilize ability of the compiler to produce zero-dependency binaries for multiple platforms. dblab was created as an attempt to build very simple and portable application to work with local or remote PostgreSQL/MySQL databases.

Features

  • Cross-platform support OSX/Linux/Windows 32/64-bit
  • Simple installation (distributed as a single binary)
  • Zero dependencies

Installation

Help

dblab is a terminal UI based interactive database client for Postgres, MySQL and SQLite.

Usage:
  dblab [flags]
  dblab [command]

Available Commands:
  help        Help about any command
  version     The version of the project

Flags:
      --config string   config file (default is $HOME/.dblab.yaml)
      --db string       Database name
      --driver string   Database driver
  -h, --help            help for dblab
      --host string     Server host name or IP
      --pass string     Password for user
      --port string     Server port
      --ssl string      SSL mode
  -u, --url string      Database connection string
      --user string     Database user

Use "dblab [command] --help" for more information about a command.

Usage

dblab --host localhost --user myuser --db users --pass password --ssl disable --port 5432 --driver postgres

Connection URL scheme is also supported:

db --url postgres://user:[email protected]:port/database?sslmode=[mode]
db --url mysql://user:[email protected](host:port)/db

If the query panel is active, type the desired query and press Ctrl+Space to see the results on the rows panel below. Otherwise, you might me located at the tables panel, then you can navigate by using the arrows Up and Down. If you want to see the rows of a table, press Enter.

Key Bindings

Key Description
Ctrl+Space If the query panel is active, execute the query
Enter If the tables panel is active, list all the rows as a result set on the rows panel
Ctrl+h Toggle to the panel on the left
Ctrl+j Toggle to the panel below
Ctrl+k Toggle to the panel above
Ctrl+l Toggle to the panel on the right
Arrow Up Next row of the result set, on the rows panel. Next table on the tables panel
Arrow Down Previous row of the result set, on the rows panel. Previous table on the tables panel
Arrow Right Horizontal scrolling on the rows panel
Arrow Left Horizontal scrolling on the rows panel
Ctrl+c Quit

Contribute

  • Fork this repository
  • Create a new feature branch for a new functionality or bugfix
  • Commit your changes
  • Execute test suite
  • Push your code and open a new pull request
  • Use issues for any questions
  • Check wiki for extra documentation

License

The MIT License (MIT). See LICENSE file for more details.

Issues
  • Add CODE_OF_CONDUCT.md and CONTRIBUTING.md files

    Add CODE_OF_CONDUCT.md and CONTRIBUTING.md files

    Pull Request Template

    Description

    Add CODE_OF_CONDUCT.md and CONTRIBUTING.md files

    Fixes #38

    Type of change

    Please delete options that are not relevant.

    • [x] This change requires a documentation update

    Checklist:

    • [x] I have made corresponding changes to the documentation
    • [x] I have checked my code and corrected any misspellings
    opened by israteneda 6
  • fatal panic in dblab 0.13.0 when compiled with Go 1.17.3 on x86_64 macOS

    fatal panic in dblab 0.13.0 when compiled with Go 1.17.3 on x86_64 macOS

    Describe the bug When dblab is compiled with Go 1.17.3 on Darwin on an x86_64 platform, it panics on startup.

    fatal error: unexpected signal during runtime execution
    [signal SIGSEGV: segmentation violation code=0x1 addr=0xb01dfacedebac1e pc=0x7fff6c1cf70a]
    
    runtime stack:
    runtime: unexpected return pc for runtime.sigpanic called from 0x7fff6c1cf70a
    stack: frame={sp:0x7ffeefbff5f8, fp:0x7ffeefbff648} stack=[0x7ffeefb80698,0x7ffeefbff700)
    0x00007ffeefbff4f8:  0x01007ffeefbff518  0x0000000000000004 
    0x00007ffeefbff508:  0x000000000000001f  0x00007fff6c1cf70a 
    0x00007ffeefbff518:  0x0b01dfacedebac1e  0x0000000000000001 
    0x00007ffeefbff528:  0x00000000040388d1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff5c8 
    0x00007ffeefbff538:  0x00000000045fa820  0x00007ffeefbff580 
    0x00007ffeefbff548:  0x0000000004038b88 <runtime.fatalthrow.func1+0x0000000000000048>  0x00000000049e3720 
    0x00007ffeefbff558:  0x0000000000000001  0x0000000000000001 
    0x00007ffeefbff568:  0x00007ffeefbff5c8  0x00000000040388d1 <runtime.throw+0x0000000000000071> 
    0x00007ffeefbff578:  0x00000000049e3720  0x00007ffeefbff5b8 
    0x00007ffeefbff588:  0x0000000004038b10 <runtime.fatalthrow+0x0000000000000050>  0x00007ffeefbff598 
    0x00007ffeefbff598:  0x0000000004038b40 <runtime.fatalthrow.func1+0x0000000000000000>  0x00000000049e3720 
    0x00007ffeefbff5a8:  0x00000000040388d1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff5c8 
    0x00007ffeefbff5b8:  0x00007ffeefbff5e8  0x00000000040388d1 <runtime.throw+0x0000000000000071> 
    0x00007ffeefbff5c8:  0x00007ffeefbff5d0  0x0000000004038900 <runtime.throw.func1+0x0000000000000000> 
    0x00007ffeefbff5d8:  0x0000000004601a8b  0x000000000000002a 
    0x00007ffeefbff5e8:  0x00007ffeefbff638  0x000000000404e3f6 <runtime.sigpanic+0x0000000000000396> 
    0x00007ffeefbff5f8: <0x0000000004601a8b  0x00000000049e3720 
    0x00007ffeefbff608:  0x00007ffeefbff678  0x000000000402b666 <runtime.(*mheap).allocSpan+0x0000000000000546> 
    0x00007ffeefbff618:  0x000000c00020e000  0x0000000000008000 
    0x00007ffeefbff628:  0x00007fff00000008  0x0000000000000000 
    0x00007ffeefbff638:  0x00007ffeefbff680 !0x00007fff6c1cf70a 
    0x00007ffeefbff648: >0x00007ffeefbff680  0x0000000004938000 
    0x00007ffeefbff658:  0x000000000000059a  0x00000000042cd365 <golang.org/x/sys/unix.libc_ioctl_trampoline+0x0000000000000005> 
    0x00007ffeefbff668:  0x000000000406aa3f <runtime.syscall+0x000000000000001f>  0x000000c0001cb848 
    0x00007ffeefbff678:  0x00007ffeefbff6c0  0x000000c0001cb818 
    0x00007ffeefbff688:  0x00000000040688b0 <runtime.asmcgocall+0x0000000000000070>  0x0000000000000004 
    0x00007ffeefbff698:  0x0000000004018700 <runtime.evacuate_faststr+0x0000000000000220>  0x8700000000001018 
    0x00007ffeefbff6a8:  0x0000000000000010  0x0000000004a17e78 
    0x00007ffeefbff6b8:  0x0000000000000810  0x000000c0000001a0 
    0x00007ffeefbff6c8:  0x00000000040669c9 <runtime.systemstack+0x0000000000000049>  0x0000000000000004 
    0x00007ffeefbff6d8:  0x0000000004687060  0x00000000049e3720 
    0x00007ffeefbff6e8:  0x00007ffeefbff738  0x00000000040668c5 <runtime.mstart+0x0000000000000005> 
    0x00007ffeefbff6f8:  0x000000000406687d <runtime.rt0_go+0x000000000000013d> 
    runtime.throw({0x4601a8b, 0x49e3720})
    	/opt/macports-test/lib/go/src/runtime/panic.go:1198 +0x71
    runtime: unexpected return pc for runtime.sigpanic called from 0x7fff6c1cf70a
    stack: frame={sp:0x7ffeefbff5f8, fp:0x7ffeefbff648} stack=[0x7ffeefb80698,0x7ffeefbff700)
    0x00007ffeefbff4f8:  0x01007ffeefbff518  0x0000000000000004 
    0x00007ffeefbff508:  0x000000000000001f  0x00007fff6c1cf70a 
    0x00007ffeefbff518:  0x0b01dfacedebac1e  0x0000000000000001 
    0x00007ffeefbff528:  0x00000000040388d1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff5c8 
    0x00007ffeefbff538:  0x00000000045fa820  0x00007ffeefbff580 
    0x00007ffeefbff548:  0x0000000004038b88 <runtime.fatalthrow.func1+0x0000000000000048>  0x00000000049e3720 
    0x00007ffeefbff558:  0x0000000000000001  0x0000000000000001 
    0x00007ffeefbff568:  0x00007ffeefbff5c8  0x00000000040388d1 <runtime.throw+0x0000000000000071> 
    0x00007ffeefbff578:  0x00000000049e3720  0x00007ffeefbff5b8 
    0x00007ffeefbff588:  0x0000000004038b10 <runtime.fatalthrow+0x0000000000000050>  0x00007ffeefbff598 
    0x00007ffeefbff598:  0x0000000004038b40 <runtime.fatalthrow.func1+0x0000000000000000>  0x00000000049e3720 
    0x00007ffeefbff5a8:  0x00000000040388d1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff5c8 
    0x00007ffeefbff5b8:  0x00007ffeefbff5e8  0x00000000040388d1 <runtime.throw+0x0000000000000071> 
    0x00007ffeefbff5c8:  0x00007ffeefbff5d0  0x0000000004038900 <runtime.throw.func1+0x0000000000000000> 
    0x00007ffeefbff5d8:  0x0000000004601a8b  0x000000000000002a 
    0x00007ffeefbff5e8:  0x00007ffeefbff638  0x000000000404e3f6 <runtime.sigpanic+0x0000000000000396> 
    0x00007ffeefbff5f8: <0x0000000004601a8b  0x00000000049e3720 
    0x00007ffeefbff608:  0x00007ffeefbff678  0x000000000402b666 <runtime.(*mheap).allocSpan+0x0000000000000546> 
    0x00007ffeefbff618:  0x000000c00020e000  0x0000000000008000 
    0x00007ffeefbff628:  0x00007fff00000008  0x0000000000000000 
    0x00007ffeefbff638:  0x00007ffeefbff680 !0x00007fff6c1cf70a 
    0x00007ffeefbff648: >0x00007ffeefbff680  0x0000000004938000 
    0x00007ffeefbff658:  0x000000000000059a  0x00000000042cd365 <golang.org/x/sys/unix.libc_ioctl_trampoline+0x0000000000000005> 
    0x00007ffeefbff668:  0x000000000406aa3f <runtime.syscall+0x000000000000001f>  0x000000c0001cb848 
    0x00007ffeefbff678:  0x00007ffeefbff6c0  0x000000c0001cb818 
    0x00007ffeefbff688:  0x00000000040688b0 <runtime.asmcgocall+0x0000000000000070>  0x0000000000000004 
    0x00007ffeefbff698:  0x0000000004018700 <runtime.evacuate_faststr+0x0000000000000220>  0x8700000000001018 
    0x00007ffeefbff6a8:  0x0000000000000010  0x0000000004a17e78 
    0x00007ffeefbff6b8:  0x0000000000000810  0x000000c0000001a0 
    0x00007ffeefbff6c8:  0x00000000040669c9 <runtime.systemstack+0x0000000000000049>  0x0000000000000004 
    0x00007ffeefbff6d8:  0x0000000004687060  0x00000000049e3720 
    0x00007ffeefbff6e8:  0x00007ffeefbff738  0x00000000040668c5 <runtime.mstart+0x0000000000000005> 
    0x00007ffeefbff6f8:  0x000000000406687d <runtime.rt0_go+0x000000000000013d> 
    runtime.sigpanic()
    	/opt/macports-test/lib/go/src/runtime/signal_unix.go:719 +0x396
    
    goroutine 1 [syscall, locked to thread]:
    syscall.syscall(0x42cd360, 0x1, 0x40487413, 0xc0001cb8d8)
    	/opt/macports-test/lib/go/src/runtime/sys_darwin.go:22 +0x3b fp=0xc0001cb848 sp=0xc0001cb828 pc=0x40655db
    syscall.syscall(0x40a9ca6, 0x4012514, 0xc0001cb900, 0x40a9bd8)
    	<autogenerated>:1 +0x26 fp=0xc0001cb890 sp=0xc0001cb848 pc=0x406b246
    golang.org/x/sys/unix.ioctl(0x45ea62d, 0x4, 0x1000000000008)
    	/Users/hgillot/go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_amd64.go:689 +0x39 fp=0xc0001cb8c0 sp=0xc0001cb890 pc=0x42ccff9
    golang.org/x/sys/unix.IoctlGetTermios(...)
    	/Users/hgillot/go/pkg/mod/golang.org/x/[email protected]/unix/ioctl.go:72
    github.com/mattn/go-isatty.IsTerminal(0x45ea62d)
    	/Users/hgillot/go/pkg/mod/github.com/mattn/[email protected]/isatty_bsd.go:10 +0x50 fp=0xc0001cb930 sp=0xc0001cb8c0 pc=0x42cd470
    github.com/fatih/color.init()
    	/Users/hgillot/go/pkg/mod/github.com/fatih/[email protected]/color.go:21 +0x7a fp=0xc0001cb968 sp=0xc0001cb930 pc=0x42cdc5a
    runtime.doInit(0x4941200)
    	/opt/macports-test/lib/go/src/runtime/proc.go:6498 +0x123 fp=0xc0001cbaa0 sp=0xc0001cb968 pc=0x4048063
    runtime.doInit(0x49411a0)
    	/opt/macports-test/lib/go/src/runtime/proc.go:6475 +0x71 fp=0xc0001cbbd8 sp=0xc0001cbaa0 pc=0x4047fb1
    runtime.doInit(0x493e300)
    	/opt/macports-test/lib/go/src/runtime/proc.go:6475 +0x71 fp=0xc0001cbd10 sp=0xc0001cbbd8 pc=0x4047fb1
    runtime.doInit(0x4941b00)
    	/opt/macports-test/lib/go/src/runtime/proc.go:6475 +0x71 fp=0xc0001cbe48 sp=0xc0001cbd10 pc=0x4047fb1
    runtime.doInit(0x493c780)
    	/opt/macports-test/lib/go/src/runtime/proc.go:6475 +0x71 fp=0xc0001cbf80 sp=0xc0001cbe48 pc=0x4047fb1
    runtime.main()
    	/opt/macports-test/lib/go/src/runtime/proc.go:238 +0x1e6 fp=0xc0001cbfe0 sp=0xc0001cbf80 pc=0x403af26
    runtime.goexit()
    	/opt/macports-test/lib/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc0001cbfe8 sp=0xc0001cbfe0 pc=0x4068ba1
    

    To Reproduce Steps to reproduce the behavior:

    1. Ensure running macOS on an x86_64 Intel host
    2. Ensure Go is version 1.17+
    3. Checkout dblab and switch to v0.13.0 branch
    4. make build
    5. Attempt to run dblab

    Expected behavior dblab runs normally.

    OS (please complete the following information):

    • macOS Catalina 10.15.7, Intel x85_64

    Additional context

    • Go 1.17.3
    kind/bug 
    opened by herbygillot 5
  • Add sqlite support

    Add sqlite support

    Pull Request Template

    Description

    @israteneda requested a few months back, at the time I wasn't sure about it and how to introduce this kind of support, mostly because I wasn't aware of the current relevance of sqlite3 for the modern software development.

    Fixes #49

    Type of change

    Please delete options that are not relevant.

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [X] This change requires a documentation update

    How Has This Been Tested?

    I added a new service in the docker compose file to run same process as we do for other databases like postgres or mysql. That I could have a pretty similar experience to run the TUI client.

    Checklist:

    • [X] My code follows the style guidelines of this project
    • [X] I have performed a self-review of my own code
    • [X] I have commented my code, particularly in hard-to-understand areas
    • [X] I have made corresponding changes to the documentation
    • [X] I have added tests that prove my fix is effective or that my feature works
    • [X] New and existing unit tests pass locally with my changes
    • [X] I have checked my code and corrected any misspellings
    opened by danvergara 3
  • Migrate dblab to a new tui framework

    Migrate dblab to a new tui framework

    Is your feature request related to a problem? Please describe. The current framework that dbladb relies on is gocui, but is not under active development. So, if we spot a nasty bug or we can add extra functionality out of those we currently have, we're not gonna be able fix or add them.

    Describe the solution you'd like I'm proposing to migrate to lipbgloss, which is another alternative that is under active development and looks nicer than the current solution.

    Describe alternatives you've considered I considered temui, but it's not an option because of the lack of critical features. I was a direct competitor to gocui at the beginning.

    Additional context I'm considering to add a view to show the schema of the selected table on the interface, but currenly we don't have available space to do so. I'm thinking to take advantage of the tabs feature that lipgloss provides as show below: lipgloss

    kind/enhancement expert 
    opened by danvergara 3
  • Unable to connect to mariadb when password contains characters '@#'

    Unable to connect to mariadb when password contains characters '@#'

    Describe the bug Unable to connect to mariadb when password contains characters '@#'

    To Reproduce Steps to reproduce the behavior: Connect to mariadb or mysql with a password containing '@#' e.g.

    ./dblab --driver mysql --host xyz.abc.db.skysql.net --user myuser --pass [email protected]#ABC--ssl enable --port 5001

    or

    ./dblab --driver mysql --host xyz.abc.db.skysql.net --user myuser --pass '[email protected]#ABC'--ssl enable --port 5001

    Receive this error: Error: Error 1045: Access denied for user 'redacted'@'redactedip' (using password: YES)

    Expected behavior Connects

    Screenshots If applicable, add screenshots to help explain your problem.

    OS (please complete the following information):

    • MacOS BigSur 11.2.3
    kind/bug 
    opened by ManjotS 3
  • Error when viewing table structure

    Error when viewing table structure

    Describe the bug When pressing 'Enter' on a table, dblab crashes saying 'unknown column 'tc.enforced' in field list

    To Reproduce Steps to reproduce the behavior:

    1. Load a database
    2. Go to a table and press enter

    Expected behavior Should so table structure

    OS (please complete the following information): Arch linux

    Additional context This is when connecting to a mariaDB database

    kind/bug 
    opened by nathanaelcunningham 2
  • Is it possible to support SQLite

    Is it possible to support SQLite

    Is your feature request related to a problem? Please describe. It's not related to a specific problem, just I'm wondering if is it possible to use dblab with SQLite

    Describe the solution you'd like I think could be possible support SQLite, but I'm not sure

    Describe alternatives you've considered I tried to use dblab with postgres, but I'd like to just play around with dblab and a lightweight database as SQLite

    Additional context Maybe as SQLite is also an SQL database, it might be possible to support SQLite

    kind/enhancement intermediate 
    opened by israteneda 2
  • [FEATURE] It might be a good idea to add a CONTRIBUTION file and a CODE_OF_CONDUCT

    [FEATURE] It might be a good idea to add a CONTRIBUTION file and a CODE_OF_CONDUCT

    Is your feature request related to a problem? Please describe. I'd like to contribute with the code of dblab, but I don't know very well golang

    Describe the solution you'd like Maybe could be a good idea to add a CONTRIBUTING file for new contributors to get some context of the project and for the environment setup, also could be a good idea to add a CODE_OF_CONDUCT to the repo, for the interaction between developers

    Describe alternatives you've considered I tried to run the code after I cloned, but I got an error Error: empty values required to open a session in database, I'm using Goland, then I noticed that I'm running the app without parameters so when I added --help, the error disappear

    kind/enhancement 
    opened by israteneda 2
  • "Invalid db url" although it seems very correct

    Describe the bug

    I run ~/path/to/dblab -u postgres://postgres:[email protected]:5432/mydb?sslmode=disable and get the following error (the db url is valid, I use it with psql and other tools.

    Error: postgres://postgres:[email protected]:5432/openfindata?sslmode=disable: invalid url
    Usage:
      dblab [flags]
      dblab [command]
    
    Available Commands:
      help        Help about any command
      version     The version of the project
    
    Flags:
          --config          get the connection data from a config file (default is $HOME/.dblab.yaml or the current directory)
          --db string       Database name
          --driver string   Database driver
      -h, --help            help for dblab
          --host string     Server host name or IP
          --pass string     Password for user
          --port string     Server port
          --ssl string      SSL mode
      -u, --url string      Database connection string
          --user string     Database user
    
    Use "dblab [command] --help" for more information about a command.
    
    Error: postgres://postgres:[email protected]:5432/openfindata?sslmode=disable: invalid url
    

    As a bonus problem, my shell is messed up after the crash (typed text on the command line is invisible), and I need to reset it to be able to see my input again.

    To Reproduce Steps to reproduce the behavior:

    1. run ~/path/to/dblab -u postgres://postgres:[email protected]:5432/mydb?sslmode=disable
    2. see error above

    Expected behavior A valid url should not fail, and the terminal should be left like it was.

    Screenshots N/A

    OS (please complete the following information):

    • debian linux unstable
    • downloaded this release https://github.com/danvergara/dblab/releases/download/v0.12.0/dblab_0.12.0_linux_amd64.tar.gz

    Additional context

    kind/bug 
    opened by laurentS 1
  • [FEATURE] Add suport for config file like .db.yaml

    [FEATURE] Add suport for config file like .db.yaml

    Is your feature request related to a problem? Please describe. Many tools like this, provide support for config files to customize or automate some tasks.

    Describe the solution you'd like Now, there are two ways to run the cli:

    1. By specifying the main individual flags:
    $ dblab --host localhost --user myuser --db users --pass password --ssl disable --port 5432 --driver postgres
    
    1. By defining the url flags:
    $ db --url postgres://user:[email protected]:port/database
    

    What if we'd just run the single binary with no flags, but a .dblab.yaml file has to be present with the necessary parameters to execute the application.

    Example:

    config:
       host: localhost
       user: myuser
       db: users
       pass: password
       port: 5432
       driver: postgres
    

    Describe alternatives you've considered Other alternative is add a new flag called config that receives the path to the config file:

    $ dblab --config ~/path/to/config
    

    Additional context This was originally proposed by @pa-m

    good first issue kind/enhancement beginner intermediate 
    opened by danvergara 1
  • fix(gui): remove some views not ready for production use

    fix(gui): remove some views not ready for production use

    Remove some view from the main panel

    Description

    Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

    Fixes # (issue)

    Type of change

    Please delete options that are not relevant.

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [x] My code follows the style guidelines of this project
    • [x] I have performed a self-review of my own code
    • [ ] I have commented my code, particularly in hard-to-understand areas
    • [ ] I have made corresponding changes to the documentation
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] New and existing unit tests pass locally with my changes
    • [x] I have checked my code and corrected any misspellings
    kind/bug 
    opened by danvergara 0
  • [FEATURE] Idea – Saving the first time configuration

    [FEATURE] Idea – Saving the first time configuration

    Is your feature request related to a problem? Please describe. image I was using dblab, and I noticed that I had to enter my configuration every time I run dblab without --config flag Describe the solution you'd like I think it could be cool to have the option to save the first time configuration, so we can get the existing configuration after the first time I run dblab. So with don't have to run ./dblab --config every time that we want to run the app. Describe alternatives you've considered It works well with --config flag Additional context I'm not sure where the configuration could be saved Also, what happen if I would rather not use the first time configuration anymore 🤔

    kind/enhancement 
    opened by israteneda 5
  • Add pagination

    Add pagination

    Pull Request Template

    Description

    Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

    Fixes # (issue)

    Type of change

    Please delete options that are not relevant.

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

    Checklist:

    • [ ] My code follows the style guidelines of this project
    • [ ] I have performed a self-review of my own code
    • [ ] I have commented my code, particularly in hard-to-understand areas
    • [ ] I have made corresponding changes to the documentation
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] New and existing unit tests pass locally with my changes
    • [ ] I have checked my code and corrected any misspellings
    opened by danvergara 0
  • Re-fresh Session/Connection

    Re-fresh Session/Connection

    Is your feature request related to a problem? Please describe.

    It's odd to see that when a database container is shutting down, dblab doesn't do anything about it. The current behavior when that happen is that dblab returns an error message and that's it.

    Describe the solution you'd like

    It would be nice if dblab let you know that the session/connection has expired and then display some sort of form to get the new values for a new database connection (just like pgweb does).

    Describe alternatives you've considered

    Another options is just stop the execution and show an error message in the std output.

    kind/enhancement intermediate 
    opened by danvergara 0
  • Multi session

    Multi session

    Is your feature request related to a problem? Please describe. Many other database clients stores the connection encrypted somewhere. It'd be nice to have something like that available on dblab.

    Describe the solution you'd like dblab might have a system used to store previous connections encrypted somewhere in the local file system. We might add a flag to access to an special menu with the list of the old connections, be able to select one, and provide the password and decrypt that to connect to the database.

    Describe alternatives you've considered Don't have other alternatives

    kind/enhancement expert 
    opened by danvergara 0
  • Web app to see the content on the browser

    Web app to see the content on the browser

    Is your feature request related to a problem? Please describe. For some people, the terminal is a little less expressive than the desktop or web applications, so we can provide another experience to those potential users

    Describe the solution you'd like My proposed solutions is to spin up a web server that serves a web application that displays the database content.

    Describe alternatives you've considered I've considered a GUI app, but not sure about the esthetics capabilities of the GUI frameworks.

    kind/enhancement expert 
    opened by danvergara 0
  • Pagination

    Pagination

    Is your feature request related to a problem? Please describe.

    The table selection has a serious problem when it comes to query big tables, by default is gonna return all the records from the selected table which resource intensive.

    Describe the solution you'd like

    The best we can do is adding a pagination system. I'm considering to add an small view with a kind of menu to handle the pagination as we usually do in web applications. The system might be pretty much like the view selection menu, and besides I could add some short cuts to have a better UX.

    Describe alternatives you've considered

    Another option is to add an special configuration to declare a maximun number of rows given by the user, the default might be 100.

    kind/enhancement intermediate 
    opened by danvergara 0
Releases(v0.14.1)
Owner
Daniel Omar Vergara Pérez
Python, Ruby on Rails and Go developer.
Daniel Omar Vergara Pérez
WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

null 2.2k Jun 28, 2022
Go-Postgresql-Query-Builder - A query builder for Postgresql in Go

Postgresql Query Builder for Go This query builder aims to make complex queries

Samuel Banks 4 May 24, 2022
mysql to mysql 轻量级多线程的库表数据同步

goMysqlSync golang mysql to mysql 轻量级多线程库表级数据同步 测试运行 设置当前binlog位置并且开始运行 go run main.go -position mysql-bin.000001 1 1619431429 查询当前binlog位置,参数n为秒数,查询结

null 13 Jun 14, 2022
Devcloud-go provides a sql-driver for mysql which named devspore driver and a redis client which named devspore client,

Devcloud-go Devcloud-go provides a sql-driver for mysql which named devspore driver and a redis client which named devspore client, you can use them w

HUAWEI CLOUD 11 Jun 9, 2022
Cross-platform client for PostgreSQL databases

pgweb Web-based PostgreSQL database browser written in Go. Overview Pgweb is a web-based database browser for PostgreSQL, written in Go and works on O

Dan Sosedoff 7.3k Jul 3, 2022
Cross-platform client for PostgreSQL databases

pgweb Web-based PostgreSQL database browser written in Go. Overview Pgweb is a web-based database browser for PostgreSQL, written in Go and works on O

Dan Sosedoff 7.3k Jun 30, 2022
pREST (PostgreSQL REST), simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new

pREST pREST (PostgreSQL REST), simplify and accelerate development, instant, realtime, high-performance on any Postgres application, existing or new P

pREST 3.3k Jun 29, 2022
PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology management, high availability, configuration management, and plugin extensions.

What is PolarDB Cluster Manager PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology manage

null 8 Dec 15, 2021
CloudQuery extracts, transforms, and loads your cloud assets into normalized PostgreSQL tables.

The open-source cloud asset inventory backed by SQL. CloudQuery extracts, transforms, and loads your cloud assets into normalized PostgreSQL tables. C

CloudQuery 2.3k Jul 1, 2022
A Go rest API project that is following solid and common principles and is connected to local MySQL database.

This is an intermediate-level go project that running with a project structure optimized RESTful API service in Go. API's of that project is designed based on solid and common principles and connected to the local MySQL database.

Kıvanç Aydoğmuş 21 Jun 6, 2022
BQB is a lightweight and easy to use query builder that works with sqlite, mysql, mariadb, postgres, and others.

Basic Query Builder Why Simple, lightweight, and fast Supports any and all syntax by the nature of how it works Doesn't require learning special synta

Aaron M 37 Jun 11, 2022
pg_timetable: Advanced scheduling for PostgreSQL

pg_timetable: Advanced scheduling for PostgreSQL pg_timetable is an advanced job scheduler for PostgreSQL, offering many advantages over traditional s

CYBERTEC PostgreSQL International GmbH 727 Jun 26, 2022
PostgreSQL style Parser splitted from CockroachDB

What's this PostgreSQL style Parser splitted from CockroachDB See: Complex SQL format example

auxten 133 Jun 27, 2022
Enhanced PostgreSQL logical replication

pgcat - Enhanced postgresql logical replication Why pgcat? Architecture Build from source Install Run Conflict handling Table mapping Replication iden

jinhua luo 357 May 28, 2022
Worker failover support for PostgreSQL Citus extension using pg_auto_failover.

citus-failover Worker failover support for citus community version using pg_auto_failover. What is this? This is a simple service to monitor changes i

Navid Zarepak 21 Jun 23, 2022
Modify orca-zhang/borm in order to use in PostgreSQL

borm ??️ 针对 orca-zhang/borm 进行了修改,暂时只能兼容PostgreSQL 原因 在b站时候用过borm,用起来感觉非常简洁 自己学校里用PostgreSQL比较多 可变条件真的非常好用 问题 首先需要注意的是,这是写给PG的 PG 根本不存在某些 MySQL 独有的函数

null 13 Jul 27, 2021
A simple Golang-based application that queries a PostgreSQL database

Qwik-E-Mart Demo App A simple Golang-based application that queries a PostgreSQL database named qwikemart to read and return customer data stored in t

Joe Garcia 0 Nov 6, 2021
Implemented PostgreSQL with Golang

Customer Information Web Api Implemented PostgreSQL with Golang docker run --name postgresql-container -p 5432:5432 -e POSTGRES_PASSWORD=Password! -d

bseyhan 2 Nov 15, 2021
Typescript type declaration to PostgreSQL CREATE TABLE converter

ts2psql NOTE: This is WIP. Details in this readme are ideal state. Current usage: go build && ./ts2psql (or go build && ts2psql if on Windows OS). A s

null 1 Jan 13, 2022