Skip to content

Commit

Permalink
Only use generic SQL interface
Browse files Browse the repository at this point in the history
  • Loading branch information
mtlynch committed Sep 5, 2024
1 parent 9dd80cd commit c3b842f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 31 deletions.
19 changes: 3 additions & 16 deletions store/sqlite/entries.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ func (s Store) GetEntryMetadata(id picoshare.EntryID) (picoshare.UploadMetadata,
func (s Store) InsertEntry(reader io.Reader, metadata picoshare.UploadMetadata) error {
log.Printf("saving new entry %s", metadata.ID)

result, err := s.ctx.Exec(`
_, err := s.ctx.Exec(`
INSERT INTO
entries
(
Expand Down Expand Up @@ -204,22 +204,9 @@ func (s Store) InsertEntry(reader io.Reader, metadata picoshare.UploadMetadata)
return err
}

rowID, err := result.LastInsertId()
_, err = s.ctx.Exec(`SELECT writeblob('main', 'entries', 'contents', last_insert_rowid(), 0, :data)`,
sql.Named("data", sqlite3.Pointer(reader)))
if err != nil {
log.Printf("failed to get last insert ID: %v", err)
return err
}

blob, err := s.sqliteDB.OpenBlob("main", "entries", "contents", rowID, true)
if err != nil {
log.Printf("failed to open blob: %v", err)
return err
}
defer blob.Close()

_, err = io.Copy(blob, reader)
if err != nil {
log.Printf("failed to write file upload to blob storage: %v", err)
return err
}

Expand Down
26 changes: 11 additions & 15 deletions store/sqlite/sqlite.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import (
"log"
"time"

"github.com/ncruces/go-sqlite3"
_ "github.com/ncruces/go-sqlite3/driver"
"github.com/ncruces/go-sqlite3/driver"
_ "github.com/ncruces/go-sqlite3/embed"
"github.com/ncruces/go-sqlite3/ext/blobio"

"github.com/mtlynch/picoshare/v2/picoshare"
)
Expand All @@ -20,8 +20,7 @@ const (

type (
Store struct {
ctx *sql.DB
sqliteDB *sqlite3.Conn
ctx *sql.DB
}

rowScanner interface {
Expand All @@ -31,13 +30,7 @@ type (

func New(path string, optimizeForLitestream bool) Store {
log.Printf("reading DB from %s", path)
// TODO: Only use one?
ctx, err := sql.Open("sqlite3", path)
if err != nil {
log.Fatalln(err)
}

sqliteDB, err := sqlite3.Open(path)
ctx, err := driver.Open(path, blobio.Register)
if err != nil {
log.Fatalln(err)
}
Expand All @@ -61,7 +54,8 @@ func New(path string, optimizeForLitestream bool) Store {
}

// DEBUG
/*sqliteDB.Exec(`CREATE TABLE IF NOT EXISTS entries (
_, err = ctx.Exec(`
CREATE TABLE IF NOT EXISTS entries (
id TEXT PRIMARY KEY,
filename TEXT NOT NULL,
contents, -- TODO: Do a proper migration of previous table.
Expand All @@ -70,13 +64,15 @@ func New(path string, optimizeForLitestream bool) Store {
expiration_time TEXT,
guest_link_id TEXT,
FOREIGN KEY(guest_link_id) REFERENCES guest_links(id)
);`)*/
);`)
if err != nil {
log.Fatalf("failed to create debug table: %v", err)
}

applyMigrations(ctx)

return Store{
ctx: ctx,
sqliteDB: sqliteDB,
ctx: ctx,
}
}

Expand Down

0 comments on commit c3b842f

Please sign in to comment.