url-shortener: build configuration files (#72)

* url-shortener: makefile and dockerfile

* makefile: make docker configurable

* makefile: manifest destination

* makefile: empy manifest

---------

Co-authored-by: Giorgi Lekveishvili <lekva@gl-mbp-m1-max.local>
diff --git a/apps/url-shortener/main.go b/apps/url-shortener/main.go
index 71cf488..b1db1f9 100644
--- a/apps/url-shortener/main.go
+++ b/apps/url-shortener/main.go
@@ -12,7 +12,9 @@
 	"net/http"
 	"strings"
 
-	"github.com/mattn/go-sqlite3"
+	"github.com/ncruces/go-sqlite3"
+	_ "github.com/ncruces/go-sqlite3/driver"
+	_ "github.com/ncruces/go-sqlite3/embed"
 )
 
 var port = flag.Int("port", 8080, "Port to listen on")
@@ -87,10 +89,10 @@
 		VALUES (?, ?, ?, ?)
 	`, addr.Name, addr.Address, addr.OwnerId, addr.Active)
 	if err != nil {
-		sqliteErr, ok := err.(sqlite3.Error)
+		sqliteErr, ok := err.(*sqlite3.Error)
 		// sqliteErr.ExtendedCode and sqlite3.ErrConstraintUnique are not the same. probably some lib error.
 		// had to use actual code of unique const error
-		if ok && sqliteErr.ExtendedCode == 1555 {
+		if ok && sqliteErr.ExtendedCode() == 1555 {
 			return NameAlreadyTaken{Name: addr.Name}
 		}
 		return err