df/bff/db/sqlc/tx_delete_document.go

47 lines
795 B
Go

package db
import (
"context"
"fmt"
"os"
"path/filepath"
"google.golang.org/grpc/codes"
)
func (store *SQLStore) DeleteDocumentTx(ctx context.Context, id uint64) (code codes.Code, err error) {
doc, err := store.GetDocument(ctx, id)
if err != nil {
return codes.NotFound, fmt.Errorf("document not found")
}
p := filepath.Join("./", doc.Path)
_, err = os.Stat(p)
if err != nil {
return codes.Internal, fmt.Errorf("document not found on disk")
}
err = store.execTx(ctx, func(q *Queries) error {
var err error
err = q.DeleteDocument(ctx, id)
if err != nil {
return err
}
err = os.Remove(p)
if err != nil {
return fmt.Errorf("could not delete file from disk")
}
return err
})
if err != nil {
return codes.Internal, err
}
return codes.OK, err
}