home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

11 rows where "closed_at" is on date 2017-10-24 and user = 9599 sorted by updated_at descending

✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: comments, created_at (date), updated_at (date), closed_at (date)

type 1

  • issue 11

state 1

  • closed 11

repo 1

  • datasette 11
id node_id number title user state locked assignee milestone comments created_at updated_at ▲ closed_at author_association pull_request body repo type active_lock_reason performed_via_github_app reactions draft state_reason
267769431 MDU6SXNzdWUyNjc3Njk0MzE= 22 Refactor to use class based views simonw 9599 closed 0   Ship first public release 2857392 0 2017-10-23T18:26:22Z 2019-05-27T20:05:56Z 2017-10-24T02:25:53Z OWNER  

http://sanic.readthedocs.io/en/latest/sanic/class_based_views.html

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/22/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267886865 MDU6SXNzdWUyNjc4ODY4NjU= 28 /database?sql= should redirect correctly simonw 9599 closed 0   Ship first public release 2857392 0 2017-10-24T03:38:44Z 2017-10-24T23:54:30Z 2017-10-24T23:54:30Z OWNER  

Needs to redirect to the location with the hash while retaining the query string. This should also work with the .json extension.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/28/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267516329 MDU6SXNzdWUyNjc1MTYzMjk= 6 Better JSON response options simonw 9599 closed 0   Ship first public release 2857392 0 2017-10-23T01:18:47Z 2017-10-24T15:07:58Z 2017-10-24T15:07:58Z OWNER  

Default returns this:

{
    “Columns”: [“id”, “name”, “age”],
    “Rows”: [
         [45, “Simon”, 36]
    ]
}

.jsono instead returns a list of objects each duplicating the headers in its keys.

They both probably share the same pagination mechanism so it might not be a jsono flat list.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/6/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
268050821 MDU6SXNzdWUyNjgwNTA4MjE= 29 Handle bytestring records encoding to JSON simonw 9599 closed 0   Ship first public release 2857392 1 2017-10-24T14:18:45Z 2017-10-24T14:59:00Z 2017-10-24T14:58:47Z OWNER  

http://localhost:8006/northwind-40d049b/Categories.json 500s right now

The string representation of one of the values looks like this:

b"\x15\x1c/\x00\x02\x00

This is a bytestring from the database which cannot be naively converted to a unicode string.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/29/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267828746 MDU6SXNzdWUyNjc4Mjg3NDY= 24 Implement full URL design simonw 9599 closed 0   Ship first public release 2857392 2 2017-10-23T21:49:05Z 2017-10-24T14:12:00Z 2017-10-24T14:12:00Z OWNER  

Full URL design:

/database-name
/database-name.json
/database-name-7sha256
/database-name-7sha256.json
/database-name/table-name
/database-name/table-name.json
/database-name-7sha256/table-name
/database-name-7sha256/table-name.json
/database-name-7sha256/table-name/compound-pk
/database-name-7sha256/table-name/compound-pk.json
datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/24/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267513424 MDU6SXNzdWUyNjc1MTM0MjQ= 1 Addressable pages for every row in a table simonw 9599 closed 0   Ship first public release 2857392 6 2017-10-23T00:44:16Z 2017-10-24T14:11:04Z 2017-10-24T14:11:03Z OWNER  
/database-name-7sha256/table-name/compound-pk
/database-name-7sha256/table-name/compound-pk.json

Tricky part will be figuring out what the private key is - especially since it could be a compound primary key and it might involve different data types.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267517348 MDU6SXNzdWUyNjc1MTczNDg= 9 Initial test suite simonw 9599 closed 0   Ship first public release 2857392 2 2017-10-23T01:28:46Z 2017-10-24T05:55:33Z 2017-10-24T05:55:33Z OWNER  
datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/9/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267515836 MDU6SXNzdWUyNjc1MTU4MzY= 4 Make URLs immutable simonw 9599 closed 0   Ship first public release 2857392 8 2017-10-23T01:13:30Z 2017-10-24T02:38:24Z 2017-10-24T02:38:24Z OWNER  

Absolutely everything should have a far-future expires header

Part of the URL will be the truncated sha1 hash of the database file itself, calculated at build time

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/4/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267516650 MDU6SXNzdWUyNjc1MTY2NTA= 7 Framework where by every page is JSON plus a template simonw 9599 closed 0   Ship first public release 2857392 1 2017-10-23T01:22:03Z 2017-10-24T02:27:25Z 2017-10-24T02:27:25Z OWNER  

Every single page of my interface should be implemented as a function that returns JSON.

I can then build my jinja templates on top of the exact data that would be returned by the API version.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/7/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267732005 MDU6SXNzdWUyNjc3MzIwMDU= 17 In development mode, should still pick up new .db files simonw 9599 closed 0   Ship first public release 2857392 1 2017-10-23T16:22:40Z 2017-10-24T02:26:48Z 2017-10-24T02:26:47Z OWNER  

Follow on from #11

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/17/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267713226 MDU6SXNzdWUyNjc3MTMyMjY= 15 Support multiple databases simonw 9599 closed 0   Ship first public release 2857392 0 2017-10-23T15:29:51Z 2017-10-24T02:01:38Z 2017-10-24T02:01:38Z OWNER  

I'm going to loop through every database file in the app root directory and bundle all of them.

Each one will be accessible at /databasename

Note this is without the file extension, and we will disallow multiple files with the same name but different extensions.

Supported extensions to start with will be .db and .sqlite and .sqlite3

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/15/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issues] (
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [number] INTEGER,
   [title] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [state] TEXT,
   [locked] INTEGER,
   [assignee] INTEGER REFERENCES [users]([id]),
   [milestone] INTEGER REFERENCES [milestones]([id]),
   [comments] INTEGER,
   [created_at] TEXT,
   [updated_at] TEXT,
   [closed_at] TEXT,
   [author_association] TEXT,
   [pull_request] TEXT,
   [body] TEXT,
   [repo] INTEGER REFERENCES [repos]([id]),
   [type] TEXT
, [active_lock_reason] TEXT, [performed_via_github_app] TEXT, [reactions] TEXT, [draft] INTEGER, [state_reason] TEXT);
CREATE INDEX [idx_issues_repo]
                ON [issues] ([repo]);
CREATE INDEX [idx_issues_milestone]
                ON [issues] ([milestone]);
CREATE INDEX [idx_issues_assignee]
                ON [issues] ([assignee]);
CREATE INDEX [idx_issues_user]
                ON [issues] ([user]);
Powered by Datasette · Queries took 609.377ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows