tursodatabase / turso-cli

Command line interface to Turso.
https://turso.tech
MIT License
223 stars 37 forks source link

`turso db create` suggests `turso db show` but it's very verbose #575

Open penberg opened 1 year ago

penberg commented 1 year ago

The turso db create command suggests running turso db show, but it's extremely verbose:

Name:           bright-cobweb
URL:            libsql://bright-cobweb-penberg.turso.io
ID:             f764adb5-2b88-11ee-93e9-72ddfbb03829
Locations:      arn
Size:           0 B

Database Instances:
NAME              TYPE        LOCATION
working-turbo     primary     arn

Let's, for example, switch to recommeding people to run turso db show --url

CodingDoug commented 1 year ago

Could you say more about what you perceive to be the problem here? This is actually fewer lines of output than the output of db create itself.

penberg commented 1 year ago

The problem is that it's printing a lot of information I have no use for. When I create a database, I need two things: the URL and an authentication token. That's it.

CodingDoug commented 1 year ago

OK, so it sounds like you're proposing two things. The first is the message that introduces the command (it should just say "to get a connection URL"), and also the command to get just the URL. Right now the message says "To see information about the database, including a connection URL", which is exactly what the command does now.

CodingDoug commented 1 year ago

If you really want to speed this up, why not just print the URL in the db create output instead of making them run a command? I think the original point of the message was to introduce the developer to the show command, which is important in its own right.

penberg commented 1 year ago

We could print the URL, but it becomes asymmetric with generating the token. I suppose that's fine. But what we want to optimize for here is time to running application. For example, in TypeScript/JavaScript apps, you usually have a .env.example file with ready TURSO_DB_URL and TURSO_DB_TOKEN place-holder environment variables. That's the information we want to show to people quickly.

CodingDoug commented 1 year ago

There's a balance here between being fast and being generally helpful. I'll point out that the use case you're optimizing for isn't helped by db shell in the output. However, it's important for developers to know that invoking the shell is an important potential next step in discovering the product. I'd argue that the same is true about db show. I think general helpfulness was the original use case for the current output, and I'd like to think carefully before changing that.

penberg commented 1 year ago

@CodingDoug suggested the following change to turso db create:

Created database my-db in [Your Location] in [xx] seconds.

You can start an interactive SQL shell with:

   turso db shell my-db

To see information about the database, run:

   turso db show my-db

To bootstrap your app code with a connection url and access token, run these two commands:

    turso db show my-db --url
    turso db tokens create my-db

I think we can go even further (although @CodingDoug didn't seem to like it):

Created database my-db in [Your Location] in [xx] seconds.

You can start an interactive SQL shell with:

   turso db shell my-db

To see information about the database, run:

   turso db show my-db

To bootstrap your app code with a connection URL and access token, run these two commands:

    export LIBSQL_CLIENT_URL=$(turso db show my-db --url)
    export LIBSQL_CLIENT_TOKEN=$(turso db tokens create my-db)

And then use the LIBSQL_CLIENT_URL and LIBSQL_CLIENT_TOKEN environment variables in your app.