first commit

This commit is contained in:
Sas Andy
2024-12-09 09:51:19 +07:00
commit ecc5dfd9c0
69 changed files with 5365 additions and 0 deletions

61
cmd/migrate/main.go Normal file
View File

@@ -0,0 +1,61 @@
package main
import (
"log"
"os"
_ "github.com/go-sql-driver/mysql" // mysql driver
mysqlDriver "github.com/go-sql-driver/mysql"
"github.com/golang-migrate/migrate/v4"
mysqlMigrate "github.com/golang-migrate/migrate/v4/database/mysql"
_ "github.com/golang-migrate/migrate/v4/source/file"
"sismedika.com/sas/westone/configs"
"sismedika.com/sas/westone/db"
)
func main() {
cfg := mysqlDriver.Config{
User: configs.Envs.DBUser,
Passwd: configs.Envs.DBPassword,
Addr: configs.Envs.DBAddress,
DBName: configs.Envs.DBName,
Net: "tcp",
AllowNativePasswords: true,
ParseTime: true,
}
db, err := db.NewMySQLStorage(cfg)
if err != nil {
log.Fatal(err)
}
driver, err := mysqlMigrate.WithInstance(db.DB, &mysqlMigrate.Config{})
if err != nil {
log.Fatal(err)
}
m, err := migrate.NewWithDatabaseInstance(
"file://cmd/migrate/migrations",
"mysql",
driver,
)
if err != nil {
log.Fatal(err)
}
v, d, _ := m.Version()
log.Printf("Version: %d, dirty: %v", v, d)
cmd := os.Args[len(os.Args)-1]
if cmd == "up" {
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
log.Fatal(err)
}
}
if cmd == "down" {
if err := m.Down(); err != nil && err != migrate.ErrNoChange {
log.Fatal(err)
}
}
}

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS users;

View File

@@ -0,0 +1,11 @@
CREATE TABLE IF NOT EXISTS users (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`firstName` VARCHAR(255) NOT NULL,
`lastName` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY (email)
);

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS products;

View File

@@ -0,0 +1,10 @@
CREATE TABLE IF NOT EXISTS products (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`image` VARCHAR(255) NOT NULL,
`price` DECIMAL(10, 2) NOT NULL,
`quantity` INT UNSIGNED NOT NULL,
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS orders;

View File

@@ -0,0 +1,12 @@
CREATE TABLE IF NOT EXISTS orders (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`userId` INT UNSIGNED NOT NULL,
`total` DECIMAL(10, 2) NOT NULL,
`status` ENUM('pending', 'completed', 'cancelled') NOT NULL DEFAULT 'pending',
`address` TEXT NOT NULL,
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
FOREIGN KEY (`userId`) REFERENCES users(`id`)
);

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS order_items;

View File

@@ -0,0 +1,11 @@
CREATE TABLE IF NOT EXISTS `order_items` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`orderId` INT UNSIGNED NOT NULL,
`productId` INT UNSIGNED NOT NULL,
`quantity` INT NOT NULL,
`price` DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`orderId`) REFERENCES orders(`id`),
FOREIGN KEY (`productId`) REFERENCES products(`id`)
);