You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: db.go
    path of file: ./repos/gowitness/storage
    
    the code of the file until where you have to start completion: package storage

import (
	"errors"
	"net/url"
	"strings"

	"gorm.io/driver/postgres"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

// Db is the SQLite3 db handler ype
type Db struct {
	Location      string
	SkipMigration bool

	// cli flags
	Disabled bool
	Debug    bool
}

// NewDb sets up a new DB
func NewDb() *Db {
	return &Db{}
}

// parseDBLocation parses the db.Location file path
func parseDBLocation(dbLocation string) (*url.URL, string, error) {
	// Parse the DB URI.
	location, err := 
    
func parseDBLocation(dbLocation string) (*url.URL, string, error) {
	// Parse the DB URI.
	location, err := url.Parse(dbLocation)
	if err != nil {
		return nil, "", err
	}

	// Ensure the sqlite DB file path is correctly parsed via url.Parse
	if location.Scheme == "sqlite" {
		switch {
		case location.Host == "" && location.Path != "":
			return location, location.Path, nil
		case location.Host != "" && location.Path == "":
			return location, location.Host, nil
		case location.Host == "" && location.Path == "":
			return location, "gowitness.sqlite3", nil
		default:
			return location, strings.TrimPrefix(dbLocation, "sqlite://"), nil
		}
	}
	return location, dbLocation, nil
}