diff --git a/cmd/api/internal/domain/city.go b/cmd/api/internal/domain/city.go new file mode 100644 index 0000000..409e344 --- /dev/null +++ b/cmd/api/internal/domain/city.go @@ -0,0 +1,28 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameCity = "city" + +// City mapped from table +type City struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:city_name_idx,priority:1" json:"name"` + ProvinceID *string `gorm:"column:province_id;type:character(26);index:city_province_id_idx,priority:1" json:"province_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:city_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` +} + +// TableName City's table name +func (*City) TableName() string { + return TableNameCity +} diff --git a/cmd/api/internal/domain/cost_component.go b/cmd/api/internal/domain/cost_component.go new file mode 100644 index 0000000..4df4bab --- /dev/null +++ b/cmd/api/internal/domain/cost_component.go @@ -0,0 +1,31 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameCostComponent = "cost_component" + +// CostComponent mapped from table +type CostComponent struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:cost_component_name_idx,priority:1" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26);index:cost_component_merchant_id_idx,priority:1" json:"merchant_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:cost_component_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` + Inc *int32 `gorm:"column:inc;type:integer" json:"inc"` + Code *string `gorm:"column:code;type:character varying(100)" json:"code"` + Value *string `gorm:"column:value;type:character varying(255)" json:"value"` + CostComponentGroupID *string `gorm:"column:cost_component_group_id;type:character(26);index:cost_component_cost_component_group_id_idx,priority:1" json:"cost_component_group_id"` +} + +// TableName CostComponent's table name +func (*CostComponent) TableName() string { + return TableNameCostComponent +} diff --git a/cmd/api/internal/domain/cost_component_group.go b/cmd/api/internal/domain/cost_component_group.go new file mode 100644 index 0000000..cfe3092 --- /dev/null +++ b/cmd/api/internal/domain/cost_component_group.go @@ -0,0 +1,30 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameCostComponentGroup = "cost_component_group" + +// CostComponentGroup mapped from table +type CostComponentGroup struct { + ID string `gorm:"column:id;type:character(26);not null" json:"id"` + Name *string `gorm:"column:name;type:character varying(255)" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` + Code *string `gorm:"column:code;type:character varying(100)" json:"code"` + Inc *int32 `gorm:"column:inc;type:integer" json:"inc"` + Value *string `gorm:"column:value;type:character varying(255)" json:"value"` + CreatedBy *string `gorm:"column:created_by;type:character(26)" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` +} + +// TableName CostComponentGroup's table name +func (*CostComponentGroup) TableName() string { + return TableNameCostComponentGroup +} diff --git a/cmd/api/internal/domain/district.go b/cmd/api/internal/domain/district.go new file mode 100644 index 0000000..357f434 --- /dev/null +++ b/cmd/api/internal/domain/district.go @@ -0,0 +1,29 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameDistrict = "district" + +// District mapped from table +type District struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:district_name_idx,priority:1" json:"name"` + ProvinceID *string `gorm:"column:province_id;type:character(26);index:district_province_id_idx,priority:1" json:"province_id"` + CityID *string `gorm:"column:city_id;type:character(26);index:district_city_id_idx,priority:1" json:"city_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:district_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` +} + +// TableName District's table name +func (*District) TableName() string { + return TableNameDistrict +} diff --git a/cmd/api/internal/domain/merchant.go b/cmd/api/internal/domain/merchant.go new file mode 100644 index 0000000..0db8e30 --- /dev/null +++ b/cmd/api/internal/domain/merchant.go @@ -0,0 +1,36 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameMerchant = "merchant" + +// Merchant mapped from table +type Merchant struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:merchant_name_idx,priority:3" json:"name"` + Address *string `gorm:"column:address;type:character varying(500);index:merchant_name_idx,priority:1" json:"address"` + Email *string `gorm:"column:email;type:character varying(200);index:merchant_name_idx,priority:2" json:"email"` + Telp *string `gorm:"column:telp;type:character varying(50);index:merchant_name_idx,priority:4" json:"telp"` + AdditionalInformation *string `gorm:"column:additional_information;type:jsonb;index:merchant_additional_information_idx,priority:1;default:{}" json:"additional_information"` + Active *bool `gorm:"column:active;type:boolean;default:true" json:"active"` + CreatedBy *string `gorm:"column:created_by;type:character(26)" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` + ProvinceID *string `gorm:"column:province_id;type:character(26);index:merchant_province_id_idx,priority:1" json:"province_id"` + CityID *string `gorm:"column:city_id;type:character(26);index:merchant_city_id_idx,priority:1" json:"city_id"` + DistrictID *string `gorm:"column:district_id;type:character(26);index:merchant_district_id_idx,priority:1" json:"district_id"` + SubdistrictID *string `gorm:"column:subdistrict_id;type:character(26);index:merchant_subdistrict_id_idx,priority:1" json:"subdistrict_id"` + PostalCode *string `gorm:"column:postal_code;type:character(26);index:merchant_postal_code_idx,priority:1" json:"postal_code"` +} + +// TableName Merchant's table name +func (*Merchant) TableName() string { + return TableNameMerchant +} diff --git a/cmd/api/internal/domain/moda.go b/cmd/api/internal/domain/moda.go new file mode 100644 index 0000000..c43c9c5 --- /dev/null +++ b/cmd/api/internal/domain/moda.go @@ -0,0 +1,27 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameModa = "moda" + +// Moda mapped from table +type Moda struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:moda_name_idx,priority:1" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26);index:moda_merchant_id_idx,priority:1" json:"merchant_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:moda_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` +} + +// TableName Moda's table name +func (*Moda) TableName() string { + return TableNameModa +} diff --git a/cmd/api/internal/domain/package_type.go b/cmd/api/internal/domain/package_type.go new file mode 100644 index 0000000..b1032b4 --- /dev/null +++ b/cmd/api/internal/domain/package_type.go @@ -0,0 +1,27 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNamePackageType = "package_type" + +// PackageType mapped from table +type PackageType struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:package_type_name_idx,priority:1" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26);index:package_type_merchant_id_idx,priority:1" json:"merchant_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26)" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` +} + +// TableName PackageType's table name +func (*PackageType) TableName() string { + return TableNamePackageType +} diff --git a/cmd/api/internal/domain/postal_code.go b/cmd/api/internal/domain/postal_code.go new file mode 100644 index 0000000..60bf190 --- /dev/null +++ b/cmd/api/internal/domain/postal_code.go @@ -0,0 +1,31 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNamePostalCode = "postal_code" + +// PostalCode mapped from table +type PostalCode struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + PostalCode *string `gorm:"column:postal_code;type:character varying(255);index:postal_code_postal_code_idx,priority:1" json:"postal_code"` + ProvinceID *string `gorm:"column:province_id;type:character(26);index:postal_code_province_id_idx,priority:1" json:"province_id"` + CityID *string `gorm:"column:city_id;type:character(26);index:postal_code_city_id_idx,priority:1" json:"city_id"` + DistrictID *string `gorm:"column:district_id;type:character(26);index:postal_code_district_id_idx,priority:1" json:"district_id"` + SubdistrictID *string `gorm:"column:subdistrict_id;type:character(26);index:postal_code_subdistrict_id_idx,priority:1" json:"subdistrict_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:postal_code_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *string `gorm:"column:updated_on;type:character varying" json:"updated_on"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` +} + +// TableName PostalCode's table name +func (*PostalCode) TableName() string { + return TableNamePostalCode +} diff --git a/cmd/api/internal/domain/province.go b/cmd/api/internal/domain/province.go new file mode 100644 index 0000000..41810e1 --- /dev/null +++ b/cmd/api/internal/domain/province.go @@ -0,0 +1,27 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameProvince = "province" + +// Province mapped from table +type Province struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:province_name_idx,priority:1" json:"name"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:province_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` +} + +// TableName Province's table name +func (*Province) TableName() string { + return TableNameProvince +} diff --git a/cmd/api/internal/domain/subdistrict.go b/cmd/api/internal/domain/subdistrict.go new file mode 100644 index 0000000..dd5bc19 --- /dev/null +++ b/cmd/api/internal/domain/subdistrict.go @@ -0,0 +1,30 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameSubdistrict = "subdistrict" + +// Subdistrict mapped from table +type Subdistrict struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:subdistrit_name_idx,priority:1" json:"name"` + ProvinceID *string `gorm:"column:province_id;type:character(26);index:subdistrit_province_id_idx,priority:1" json:"province_id"` + CityID *string `gorm:"column:city_id;type:character(26);index:subdistrit_city_id_idx,priority:1" json:"city_id"` + DistrictID *string `gorm:"column:district_id;type:character(26);index:subdistrit_district_id_idx,priority:1" json:"district_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:subdistrit_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` +} + +// TableName Subdistrict's table name +func (*Subdistrict) TableName() string { + return TableNameSubdistrict +} diff --git a/cmd/api/internal/domain/users.go b/cmd/api/internal/domain/users.go new file mode 100644 index 0000000..ceee231 --- /dev/null +++ b/cmd/api/internal/domain/users.go @@ -0,0 +1,33 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameUser = "users" + +// User mapped from table +type User struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + MerchantID *string `gorm:"column:merchant_id;type:character(26);index:users_merchant_id_idx,priority:1" json:"merchant_id"` + NickName *string `gorm:"column:nick_name;type:character varying(100);index:users_nick_name_idx,priority:2" json:"nick_name"` + Email *string `gorm:"column:email;type:character varying(200);index:users_nick_name_idx,priority:1" json:"email"` + Password *string `gorm:"column:password;type:character varying(300)" json:"password"` + IsActive *bool `gorm:"column:is_active;type:boolean;default:true" json:"is_active"` + UsersRoleID *string `gorm:"column:users_role_id;type:character(26)" json:"users_role_id"` + Blocked *bool `gorm:"column:blocked;type:boolean" json:"blocked"` + BlockedNotes *string `gorm:"column:blocked_notes;type:character varying(500)" json:"blocked_notes"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:users_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` +} + +// TableName User's table name +func (*User) TableName() string { + return TableNameUser +} diff --git a/cmd/api/internal/domain/users_.go b/cmd/api/internal/domain/users_.go new file mode 100644 index 0000000..830c813 --- /dev/null +++ b/cmd/api/internal/domain/users_.go @@ -0,0 +1,29 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameUsers = "users_" + +// Users mapped from table +type Users struct { + ID string `gorm:"column:id;type:uuid;not null;default:gen_random_uuid()" json:"id"` + MerchantID *string `gorm:"column:merchant_id;type:uuid;index:idx_users_merchant,priority:1" json:"merchant_id"` + Username string `gorm:"column:username;type:character varying(50);not null;index:idx_users_username,priority:1" json:"username"` + Email string `gorm:"column:email;type:character varying(100);not null" json:"email"` + Password string `gorm:"column:password;type:character varying(200);not null" json:"password"` + Role string `gorm:"column:role;type:character varying(20);not null;default:cashier" json:"role"` + IsActive *bool `gorm:"column:is_active;type:boolean;default:true" json:"is_active"` + CreatedAt *time.Time `gorm:"column:created_at;type:timestamp without time zone;default:now()" json:"created_at"` + UpdatedAt *time.Time `gorm:"column:updated_at;type:timestamp without time zone;default:now()" json:"updated_at"` +} + +// TableName Users's table name +func (*Users) TableName() string { + return TableNameUsers +} diff --git a/cmd/api/internal/domain/users_roles.go b/cmd/api/internal/domain/users_roles.go new file mode 100644 index 0000000..a6fd3b9 --- /dev/null +++ b/cmd/api/internal/domain/users_roles.go @@ -0,0 +1,28 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameUsersRole = "users_roles" + +// UsersRole mapped from table +type UsersRole struct { + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255)" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26)" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` + RoleKey string `gorm:"column:role_key;type:character varying(20);not null" json:"role_key"` +} + +// TableName UsersRole's table name +func (*UsersRole) TableName() string { + return TableNameUsersRole +} diff --git a/cmd/api/main.go b/cmd/api/main.go index 21be0e7..af5f1b8 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -5,7 +5,9 @@ import ( "cargo-erp-backend/internal/database" "cargo-erp-backend/internal/handlers" "cargo-erp-backend/internal/logger" + "cargo-erp-backend/migrations" "cargo-erp-backend/pkg/helpers" + "os" ) func main() { @@ -23,12 +25,15 @@ func main() { db := database.NewDatabase(AppConfig, DBLogger, APPLogger) db.Connect() db.RegisterCallback() + // + migrations.GenerateModel(nil, db.Get("master")) + os.Exit(0) //redis redisDB := database.NewRedis(AppConfig, DBLogger) redisDB.Connect() redisDB.RegisterCallback() - // migrations.GenerateModel(nil, db.Get("master")) + // Helper := helpers.NewHelper(AppConfig, db, APPLogger, redisDB) app := handlers.NewHandlers(Helper) diff --git a/go.mod b/go.mod index 643dfab..0ab982c 100644 --- a/go.mod +++ b/go.mod @@ -42,6 +42,7 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/oklog/ulid/v2 v2.1.2 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/sagikazarmark/locafero v0.11.0 // indirect diff --git a/go.sum b/go.sum index d9d309b..5cfc286 100644 --- a/go.sum +++ b/go.sum @@ -87,6 +87,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/oklog/ulid/v2 v2.1.2 h1:IEclFb9JNvzYA6MW2SCxbLzcHTVsfqm3PrqGQJH5zec= +github.com/oklog/ulid/v2 v2.1.2/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/internal/domain/cost_component.go b/internal/domain/cost_component.go index 550a7d1..4df4bab 100644 --- a/internal/domain/cost_component.go +++ b/internal/domain/cost_component.go @@ -12,15 +12,17 @@ const TableNameCostComponent = "cost_component" // CostComponent mapped from table type CostComponent struct { - ID string `gorm:"column:id;type:character(26);primaryKey;default:generate_ulid()" json:"id"` - Name *string `gorm:"column:name;type:character varying(255);index:cost_component_name_idx,priority:1" json:"name"` - MerchantID *string `gorm:"column:merchant_id;type:character(26);index:cost_component_merchant_id_idx,priority:1" json:"merchant_id"` - CreatedBy *string `gorm:"column:created_by;type:character(26);index:cost_component_created_by_idx,priority:1" json:"created_by"` - CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` - UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` - UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` - Inc *string `gorm:"column:inc;type:character varying" json:"inc"` - Code *string `gorm:"column:code;type:character varying(100)" json:"code"` + ID string `gorm:"column:id;type:character(26);not null;default:generate_ulid()" json:"id"` + Name *string `gorm:"column:name;type:character varying(255);index:cost_component_name_idx,priority:1" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26);index:cost_component_merchant_id_idx,priority:1" json:"merchant_id"` + CreatedBy *string `gorm:"column:created_by;type:character(26);index:cost_component_created_by_idx,priority:1" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone;default:now()" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone;default:now()" json:"updated_on"` + Inc *int32 `gorm:"column:inc;type:integer" json:"inc"` + Code *string `gorm:"column:code;type:character varying(100)" json:"code"` + Value *string `gorm:"column:value;type:character varying(255)" json:"value"` + CostComponentGroupID *string `gorm:"column:cost_component_group_id;type:character(26);index:cost_component_cost_component_group_id_idx,priority:1" json:"cost_component_group_id"` } // TableName CostComponent's table name diff --git a/internal/domain/cost_component_group.go b/internal/domain/cost_component_group.go new file mode 100644 index 0000000..cfe3092 --- /dev/null +++ b/internal/domain/cost_component_group.go @@ -0,0 +1,30 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package domain + +import ( + "time" +) + +const TableNameCostComponentGroup = "cost_component_group" + +// CostComponentGroup mapped from table +type CostComponentGroup struct { + ID string `gorm:"column:id;type:character(26);not null" json:"id"` + Name *string `gorm:"column:name;type:character varying(255)" json:"name"` + MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"` + Code *string `gorm:"column:code;type:character varying(100)" json:"code"` + Inc *int32 `gorm:"column:inc;type:integer" json:"inc"` + Value *string `gorm:"column:value;type:character varying(255)" json:"value"` + CreatedBy *string `gorm:"column:created_by;type:character(26)" json:"created_by"` + CreatedOn *time.Time `gorm:"column:created_on;type:timestamp without time zone" json:"created_on"` + UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"` + UpdatedOn *time.Time `gorm:"column:updated_on;type:timestamp without time zone" json:"updated_on"` +} + +// TableName CostComponentGroup's table name +func (*CostComponentGroup) TableName() string { + return TableNameCostComponentGroup +} diff --git a/internal/handlers/dto/cost_component.go b/internal/handlers/dto/cost_component.go new file mode 100644 index 0000000..4852b77 --- /dev/null +++ b/internal/handlers/dto/cost_component.go @@ -0,0 +1,46 @@ +package dto + +type CreateCostComponentRequest struct { + Name string `json:"name" binding:"required,min=2"` + Code string `json:"code" binding:"required"` + Inc int32 `json:"inc"` + Value string `json:"value"` + CostComponentGroupID string `json:"cost_component_group_id" binding:"required"` +} + +type CreateCostComponentResponse struct { + ID string `json:"id"` + Name *string `json:"name"` + Code *string `json:"code"` + Inc *int32 `json:"inc"` + Value *string `json:"value"` + CostComponentGroupID *string `json:"cost_component_group_id"` + MerchantID *string `json:"merchant_id"` +} + +type CostComponentFilterAllRequest struct { + ID string `json:"id" form:"id"` + Name string `json:"name" form:"name"` + Code string `json:"code" form:"code"` + CostComponentGroupID string `json:"cost_component_group_id" form:"cost_component_group_id"` + MerchantID string `json:"merchant_id" form:"merchant_id"` +} + +type UpdateCostComponentRequest struct { + Name string `json:"name" binding:"required,min=2"` + Code string `json:"code" binding:"required"` + Inc int32 `json:"inc"` + Value string `json:"value"` + CostComponentGroupID string `json:"cost_component_group_id" binding:"required"` +} + +type ImportCostComponentResponse struct { + JobID string `json:"job_id,omitempty"` + TotalRows int `json:"total_rows"` + Imported int `json:"imported"` + Skipped int `json:"skipped"` + Logs []ImportLog `json:"logs"` + Errors []string `json:"errors"` + IsAsync bool `json:"is_async"` + Message string `json:"message,omitempty"` +} diff --git a/internal/handlers/dto/cost_component_group.go b/internal/handlers/dto/cost_component_group.go new file mode 100644 index 0000000..b3f27af --- /dev/null +++ b/internal/handlers/dto/cost_component_group.go @@ -0,0 +1,42 @@ +package dto + +type CreateCostComponentGroupRequest struct { + Name string `json:"name" binding:"required,min=2"` + Code string `json:"code" binding:"required"` + Inc int32 `json:"inc"` + Value string `json:"value"` +} + +type CreateCostComponentGroupResponse struct { + ID string `json:"id"` + Name *string `json:"name"` + Code *string `json:"code"` + Inc *int32 `json:"inc"` + Value *string `json:"value"` + MerchantID *string `json:"merchant_id"` +} + +type CostComponentGroupFilterAllRequest struct { + ID string `json:"id" form:"id"` + Name string `json:"name" form:"name"` + Code string `json:"code" form:"code"` + MerchantID string `json:"merchant_id" form:"merchant_id"` +} + +type UpdateCostComponentGroupRequest struct { + Name string `json:"name" binding:"required,min=2"` + Code string `json:"code" binding:"required"` + Inc int32 `json:"inc"` + Value string `json:"value"` +} + +type ImportCostComponentGroupResponse struct { + JobID string `json:"job_id,omitempty"` + TotalRows int `json:"total_rows"` + Imported int `json:"imported"` + Skipped int `json:"skipped"` + Logs []ImportLog `json:"logs"` + Errors []string `json:"errors"` + IsAsync bool `json:"is_async"` + Message string `json:"message,omitempty"` +} diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 8aa12ee..6d66f6e 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -3,6 +3,8 @@ package handlers import ( "cargo-erp-backend/internal/handlers/router/auth" "cargo-erp-backend/internal/handlers/router/city" + "cargo-erp-backend/internal/handlers/router/cost_component" + "cargo-erp-backend/internal/handlers/router/cost_component_group" "cargo-erp-backend/internal/handlers/router/district" "cargo-erp-backend/internal/handlers/router/postal_code" "cargo-erp-backend/internal/handlers/router/province" @@ -113,6 +115,8 @@ func (h *Handlers) Run() { district.NewDistrictHandler(h.Helper, masterdata).Router() subdistrict.NewSubdistrictHandler(h.Helper, masterdata).Router() postal_code.NewPostalCodeHandler(h.Helper, masterdata).Router() + cost_component_group.NewCostComponentGroupHandler(h.Helper, masterdata).Router() + cost_component.NewCostComponentHandler(h.Helper, masterdata).Router() } h.Helper.Log().Info("Starting Apps") diff --git a/internal/handlers/router/cost_component/cost_component.go b/internal/handlers/router/cost_component/cost_component.go new file mode 100644 index 0000000..2a9548c --- /dev/null +++ b/internal/handlers/router/cost_component/cost_component.go @@ -0,0 +1,281 @@ +package cost_component + +import ( + "cargo-erp-backend/internal/handlers/dto" + cost_componentimporter "cargo-erp-backend/internal/importers/cost_component" + "cargo-erp-backend/internal/usecases" + "cargo-erp-backend/pkg/helpers" + "cargo-erp-backend/pkg/importer" + "cargo-erp-backend/pkg/response" + "net/http" + + "github.com/gin-gonic/gin" +) + +type CostComponentHandlerInterface interface { + Router() +} + +type CostComponentHandler struct { + Helper helpers.HelperInterface + Group *gin.RouterGroup +} + +func NewCostComponentHandler(helper helpers.HelperInterface, g *gin.RouterGroup) CostComponentHandlerInterface { + return &CostComponentHandler{Helper: helper, Group: g} +} + +func (h *CostComponentHandler) Router() { + r := h.Group.Group("cost-components") + { + r.GET("/", h.GetAll) + r.POST("/list", h.GetList) + r.GET("/:id", h.GetByID) + r.POST("/", h.Create) + r.PUT("/:id", h.Update) + r.DELETE("/:id", h.Delete) + r.GET("/template", h.Template) + r.POST("/import", h.Import) + r.POST("/import/stop", h.ImportStop) + r.GET("/import/status/:jobId", h.ImportStatus) + } +} + +func (h *CostComponentHandler) GetAll(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + var req dto.CostComponentFilterAllRequest + if err := c.ShouldBindQuery(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + u := usecases.NewCostComponentUsecase(h.Helper, *userid) + components, _, err := u.GetAll(req) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + var responseDTO = make([]dto.CreateCostComponentResponse, 0) + for _, v := range components { + var DTO dto.CreateCostComponentResponse + h.Helper.MapStructToStruct(v, "json", &DTO, "json") + responseDTO = append(responseDTO, DTO) + } + response.Success(c, responseDTO) +} + +func (h *CostComponentHandler) GetList(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + + var req dto.DataTableRequest + if err := c.ShouldBindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, "Request Format request invalid") + return + } + u := usecases.NewCostComponentUsecase(h.Helper, *userid) + res, err := u.GetList(req) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + response.Success(c, res) + return +} + +func (h *CostComponentHandler) GetByID(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + id := c.Param("id") + + u := usecases.NewCostComponentUsecase(h.Helper, *userid) + component, err := u.GetByID(id) + if err != nil { + response.Error(c, http.StatusNotFound, "cost component not found") + return + } + + response.Success(c, component) +} + +func (h *CostComponentHandler) Create(c *gin.Context) { + var req dto.CreateCostComponentRequest + if err := c.BindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + var merchantid *string = nil + if userid.UsersRole_Relation.RoleKey != "SPM" { + merchantid = userid.MerchantID + } + createdBy := userid.ID + + u := usecases.NewCostComponentUsecase(h.Helper, *userid) + component, err := u.Create(req.Name, req.Code, req.Inc, req.Value, req.CostComponentGroupID, createdBy, merchantid) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + var responseDTO dto.CreateCostComponentResponse + h.Helper.MapStructToStruct(component, "json", &responseDTO, "json") + response.Created(c, responseDTO) +} + +func (h *CostComponentHandler) Update(c *gin.Context) { + id := c.Param("id") + + var req dto.UpdateCostComponentRequest + if err := c.BindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + updatedBy := userid.ID + + u := usecases.NewCostComponentUsecase(h.Helper, *userid) + component, err := u.Update(id, req.Name, req.Code, req.Inc, req.Value, req.CostComponentGroupID, updatedBy) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + var responseDTO dto.CreateCostComponentResponse + h.Helper.MapStructToStruct(component, "json", &responseDTO, "json") + response.Success(c, responseDTO) +} + +func (h *CostComponentHandler) Delete(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + id := c.Param("id") + u := usecases.NewCostComponentUsecase(h.Helper, *userid) + if err := u.Delete(id); err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + + response.Success(c, map[string]interface{}{"message": "cost component deleted"}) +} + +func (h *CostComponentHandler) Template(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + handler := cost_componentimporter.NewCostComponentImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + imp.ServeTemplate(c.Writer) +} + +func (h *CostComponentHandler) Import(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + + file, header, err := c.Request.FormFile("file") + if err != nil { + response.Error(c, http.StatusBadRequest, "File is required") + return + } + defer file.Close() + + handler := cost_componentimporter.NewCostComponentImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + + result, err := imp.Process(file, userid.ID, header.Filename) + if err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + + var importLogs []dto.ImportLog + for _, l := range result.Logs { + importLogs = append(importLogs, dto.ImportLog{ + Row: l.Row, + Status: l.Status, + Data: l.Data, + Message: l.Message, + }) + } + + response.Success(c, dto.ImportCostComponentResponse{ + JobID: result.JobID, + TotalRows: result.TotalRows, + Imported: result.Imported, + Skipped: result.Skipped, + Logs: importLogs, + Errors: result.Errors, + IsAsync: result.IsAsync, + Message: result.Message, + }) +} + +func (h *CostComponentHandler) ImportStatus(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + jobId := c.Param("jobId") + + handler := cost_componentimporter.NewCostComponentImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + + job, logs, err := imp.GetJobStatus(jobId) + if err != nil { + response.Error(c, http.StatusNotFound, "Job not found") + return + } + + response.Success(c, map[string]interface{}{ + "job": job, + "logs": logs, + }) +} + +func (h *CostComponentHandler) ImportStop(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + + var req dto.StopImportRequest + if err := c.BindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, "job_id is required") + return + } + + handler := cost_componentimporter.NewCostComponentImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + + if err := imp.StopJob(req.JobID); err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + + response.Success(c, map[string]interface{}{"message": "Job stopped"}) +} diff --git a/internal/handlers/router/cost_component_group/cost_component_group.go b/internal/handlers/router/cost_component_group/cost_component_group.go new file mode 100644 index 0000000..44c98db --- /dev/null +++ b/internal/handlers/router/cost_component_group/cost_component_group.go @@ -0,0 +1,281 @@ +package cost_component_group + +import ( + "cargo-erp-backend/internal/handlers/dto" + cost_component_groupimporter "cargo-erp-backend/internal/importers/cost_component_group" + "cargo-erp-backend/internal/usecases" + "cargo-erp-backend/pkg/helpers" + "cargo-erp-backend/pkg/importer" + "cargo-erp-backend/pkg/response" + "net/http" + + "github.com/gin-gonic/gin" +) + +type CostComponentGroupHandlerInterface interface { + Router() +} + +type CostComponentGroupHandler struct { + Helper helpers.HelperInterface + Group *gin.RouterGroup +} + +func NewCostComponentGroupHandler(helper helpers.HelperInterface, g *gin.RouterGroup) CostComponentGroupHandlerInterface { + return &CostComponentGroupHandler{Helper: helper, Group: g} +} + +func (h *CostComponentGroupHandler) Router() { + r := h.Group.Group("cost-component-groups") + { + r.GET("/", h.GetAll) + r.POST("/list", h.GetList) + r.GET("/:id", h.GetByID) + r.POST("/", h.Create) + r.PUT("/:id", h.Update) + r.DELETE("/:id", h.Delete) + r.GET("/template", h.Template) + r.POST("/import", h.Import) + r.POST("/import/stop", h.ImportStop) + r.GET("/import/status/:jobId", h.ImportStatus) + } +} + +func (h *CostComponentGroupHandler) GetAll(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + var req dto.CostComponentGroupFilterAllRequest + if err := c.ShouldBindQuery(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + u := usecases.NewCostComponentGroupUsecase(h.Helper, *userid) + groups, _, err := u.GetAll(req) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + var responseDTO = make([]dto.CreateCostComponentGroupResponse, 0) + for _, v := range groups { + var DTO dto.CreateCostComponentGroupResponse + h.Helper.MapStructToStruct(v, "json", &DTO, "json") + responseDTO = append(responseDTO, DTO) + } + response.Success(c, responseDTO) +} + +func (h *CostComponentGroupHandler) GetList(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + + var req dto.DataTableRequest + if err := c.ShouldBindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, "Request Format request invalid") + return + } + u := usecases.NewCostComponentGroupUsecase(h.Helper, *userid) + res, err := u.GetList(req) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + response.Success(c, res) + return +} + +func (h *CostComponentGroupHandler) GetByID(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + id := c.Param("id") + + u := usecases.NewCostComponentGroupUsecase(h.Helper, *userid) + group, err := u.GetByID(id) + if err != nil { + response.Error(c, http.StatusNotFound, "cost component group not found") + return + } + + response.Success(c, group) +} + +func (h *CostComponentGroupHandler) Create(c *gin.Context) { + var req dto.CreateCostComponentGroupRequest + if err := c.BindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + var merchantid *string = nil + if userid.UsersRole_Relation.RoleKey != "SPM" { + merchantid = userid.MerchantID + } + createdBy := userid.ID + + u := usecases.NewCostComponentGroupUsecase(h.Helper, *userid) + group, err := u.Create(req.Name, req.Code, req.Inc, req.Value, createdBy, merchantid) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + var responseDTO dto.CreateCostComponentGroupResponse + h.Helper.MapStructToStruct(group, "json", &responseDTO, "json") + response.Created(c, responseDTO) +} + +func (h *CostComponentGroupHandler) Update(c *gin.Context) { + id := c.Param("id") + + var req dto.UpdateCostComponentGroupRequest + if err := c.BindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + updatedBy := userid.ID + + u := usecases.NewCostComponentGroupUsecase(h.Helper, *userid) + group, err := u.Update(id, req.Name, req.Code, req.Inc, req.Value, updatedBy) + if err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + var responseDTO dto.CreateCostComponentGroupResponse + h.Helper.MapStructToStruct(group, "json", &responseDTO, "json") + response.Success(c, responseDTO) +} + +func (h *CostComponentGroupHandler) Delete(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + id := c.Param("id") + u := usecases.NewCostComponentGroupUsecase(h.Helper, *userid) + if err := u.Delete(id); err != nil { + response.Error(c, http.StatusInternalServerError, err.Error()) + return + } + + response.Success(c, map[string]interface{}{"message": "cost component group deleted"}) +} + +func (h *CostComponentGroupHandler) Template(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + handler := cost_component_groupimporter.NewCostComponentGroupImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + imp.ServeTemplate(c.Writer) +} + +func (h *CostComponentGroupHandler) Import(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + + file, header, err := c.Request.FormFile("file") + if err != nil { + response.Error(c, http.StatusBadRequest, "File is required") + return + } + defer file.Close() + + handler := cost_component_groupimporter.NewCostComponentGroupImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + + result, err := imp.Process(file, userid.ID, header.Filename) + if err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + + var importLogs []dto.ImportLog + for _, l := range result.Logs { + importLogs = append(importLogs, dto.ImportLog{ + Row: l.Row, + Status: l.Status, + Data: l.Data, + Message: l.Message, + }) + } + + response.Success(c, dto.ImportCostComponentGroupResponse{ + JobID: result.JobID, + TotalRows: result.TotalRows, + Imported: result.Imported, + Skipped: result.Skipped, + Logs: importLogs, + Errors: result.Errors, + IsAsync: result.IsAsync, + Message: result.Message, + }) +} + +func (h *CostComponentGroupHandler) ImportStatus(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + jobId := c.Param("jobId") + + handler := cost_component_groupimporter.NewCostComponentGroupImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + + job, logs, err := imp.GetJobStatus(jobId) + if err != nil { + response.Error(c, http.StatusNotFound, "Job not found") + return + } + + response.Success(c, map[string]interface{}{ + "job": job, + "logs": logs, + }) +} + +func (h *CostComponentGroupHandler) ImportStop(c *gin.Context) { + userid, err := h.Helper.GetAuthInfo(c.GetString("auth")) + if err != nil { + response.Error(c, http.StatusUnauthorized, err.Error()) + return + } + + var req dto.StopImportRequest + if err := c.BindJSON(&req); err != nil { + response.Error(c, http.StatusBadRequest, "job_id is required") + return + } + + handler := cost_component_groupimporter.NewCostComponentGroupImportHandler(*userid, h.Helper) + imp := importer.NewImporter(h.Helper, handler) + + if err := imp.StopJob(req.JobID); err != nil { + response.Error(c, http.StatusBadRequest, err.Error()) + return + } + + response.Success(c, map[string]interface{}{"message": "Job stopped"}) +} diff --git a/internal/importers/cost_component/importer.go b/internal/importers/cost_component/importer.go new file mode 100644 index 0000000..1553eab --- /dev/null +++ b/internal/importers/cost_component/importer.go @@ -0,0 +1,132 @@ +package cost_component + +import ( + "cargo-erp-backend/internal/domain" + "cargo-erp-backend/pkg/helpers" + "cargo-erp-backend/pkg/importer" + "fmt" + "strconv" + "strings" + "time" + + "gorm.io/gorm" +) + +type CostComponentImportHandler struct { + UserData domain.User + Helper helpers.HelperInterface + lastGroupName string +} + +func NewCostComponentImportHandler(userData domain.User, helper helpers.HelperInterface) importer.ImportHandler { + return &CostComponentImportHandler{ + UserData: userData, + Helper: helper, + } +} + +func (h *CostComponentImportHandler) ValidateRow(row []string, rowNumber int) (importer.RowData, []error) { + var errors []error + + if len(row) < 5 { + errors = append(errors, fmt.Errorf("row must have 5 columns: name, code, inc, value, cost_component_group_name")) + return nil, errors + } + + name := strings.TrimSpace(row[0]) + if name == "" { + errors = append(errors, fmt.Errorf("name is required")) + } else if len(name) < 2 { + errors = append(errors, fmt.Errorf("name must be at least 2 characters")) + } else if len(name) > 255 { + errors = append(errors, fmt.Errorf("name must be at most 255 characters")) + } + + code := strings.TrimSpace(row[1]) + if code == "" { + errors = append(errors, fmt.Errorf("code is required")) + } + + incStr := strings.TrimSpace(row[2]) + var inc int32 + if incStr != "" { + parsed, err := strconv.ParseInt(incStr, 10, 32) + if err != nil { + errors = append(errors, fmt.Errorf("inc must be a valid integer")) + } else { + inc = int32(parsed) + } + } + + value := strings.TrimSpace(row[3]) + + groupName := strings.TrimSpace(row[4]) + if groupName == "" { + errors = append(errors, fmt.Errorf("cost_component_group_name is required")) + } + + if len(errors) > 0 { + return nil, errors + } + + var group domain.CostComponentGroup + db := h.Helper.GetDB("slave") + if err := db.Where("UPPER(name) = ?", strings.ToUpper(groupName)).First(&group).Error; err != nil { + errors = append(errors, fmt.Errorf("cost_component_group '%s' not found", groupName)) + return nil, errors + } + + h.lastGroupName = groupName + + now := time.Now() + component := &domain.CostComponent{ + Name: &name, + Code: &code, + Inc: &inc, + Value: &value, + CostComponentGroupID: &group.ID, + MerchantID: h.UserData.MerchantID, + CreatedBy: &h.UserData.ID, + CreatedOn: &now, + UpdatedBy: &h.UserData.ID, + UpdatedOn: &now, + } + + return component, nil +} + +func (h *CostComponentImportHandler) GetDataString(data importer.RowData) string { + component := data.(*domain.CostComponent) + name := "" + if component.Name != nil { + name = *component.Name + } + code := "" + if component.Code != nil { + code = *component.Code + } + return fmt.Sprintf("%s, %s, %s", name, code, h.lastGroupName) +} + +func (h *CostComponentImportHandler) IsDuplicate(db *gorm.DB, data importer.RowData) bool { + component := data.(*domain.CostComponent) + var count int64 + db.Model(&domain.CostComponent{}). + Joins("JOIN cost_component_group ON cost_component.cost_component_group_id = cost_component_group.id"). + Where("UPPER(cost_component.name) = ? AND UPPER(cost_component.code) = ? AND UPPER(cost_component_group.name) = ?", + strings.ToUpper(*component.Name), strings.ToUpper(*component.Code), strings.ToUpper(h.lastGroupName)). + Count(&count) + return count > 0 +} + +func (h *CostComponentImportHandler) GetTemplateHeaders() []string { + return []string{"name", "code", "inc", "value", "cost_component_group_name"} +} + +func (h *CostComponentImportHandler) GetTemplateRows() [][]string { + return [][]string{ + {"Component A", "CA", "1", "10000", "Group 1"}, + {"Component B", "CB", "2", "20000", "Group 2"}, + {"Component C", "CC", "3", "30000", "Group 1"}, + } +} diff --git a/internal/importers/cost_component_group/importer.go b/internal/importers/cost_component_group/importer.go new file mode 100644 index 0000000..a29895d --- /dev/null +++ b/internal/importers/cost_component_group/importer.go @@ -0,0 +1,118 @@ +package cost_component_group + +import ( + "cargo-erp-backend/internal/domain" + "cargo-erp-backend/pkg/helpers" + "cargo-erp-backend/pkg/importer" + "fmt" + "strconv" + "strings" + "time" + + "github.com/oklog/ulid/v2" + "gorm.io/gorm" +) + +type CostComponentGroupImportHandler struct { + UserData domain.User + Helper helpers.HelperInterface +} + +func NewCostComponentGroupImportHandler(userData domain.User, helper helpers.HelperInterface) importer.ImportHandler { + return &CostComponentGroupImportHandler{ + UserData: userData, + Helper: helper, + } +} + +func (h *CostComponentGroupImportHandler) ValidateRow(row []string, rowNumber int) (importer.RowData, []error) { + var errors []error + + if len(row) < 4 { + errors = append(errors, fmt.Errorf("row must have 4 columns: name, code, inc, value")) + return nil, errors + } + + name := strings.TrimSpace(row[0]) + if name == "" { + errors = append(errors, fmt.Errorf("name is required")) + } else if len(name) < 2 { + errors = append(errors, fmt.Errorf("name must be at least 2 characters")) + } else if len(name) > 255 { + errors = append(errors, fmt.Errorf("name must be at most 255 characters")) + } + + code := strings.TrimSpace(row[1]) + if code == "" { + errors = append(errors, fmt.Errorf("code is required")) + } + + incStr := strings.TrimSpace(row[2]) + var inc int32 + if incStr != "" { + parsed, err := strconv.ParseInt(incStr, 10, 32) + if err != nil { + errors = append(errors, fmt.Errorf("inc must be a valid integer")) + } else { + inc = int32(parsed) + } + } + + value := strings.TrimSpace(row[3]) + + if len(errors) > 0 { + return nil, errors + } + + now := time.Now() + id := ulid.Make().String() + group := &domain.CostComponentGroup{ + ID: id, + Name: &name, + Code: &code, + Inc: &inc, + Value: &value, + MerchantID: h.UserData.MerchantID, + CreatedBy: &h.UserData.ID, + CreatedOn: &now, + UpdatedBy: &h.UserData.ID, + UpdatedOn: &now, + } + + return group, nil +} + +func (h *CostComponentGroupImportHandler) GetDataString(data importer.RowData) string { + group := data.(*domain.CostComponentGroup) + name := "" + if group.Name != nil { + name = *group.Name + } + code := "" + if group.Code != nil { + code = *group.Code + } + return fmt.Sprintf("%s, %s", name, code) +} + +func (h *CostComponentGroupImportHandler) IsDuplicate(db *gorm.DB, data importer.RowData) bool { + group := data.(*domain.CostComponentGroup) + var count int64 + db.Model(&domain.CostComponentGroup{}). + Where("UPPER(name) = ? AND UPPER(code) = ?", + strings.ToUpper(*group.Name), strings.ToUpper(*group.Code)). + Count(&count) + return count > 0 +} + +func (h *CostComponentGroupImportHandler) GetTemplateHeaders() []string { + return []string{"name", "code", "inc", "value"} +} + +func (h *CostComponentGroupImportHandler) GetTemplateRows() [][]string { + return [][]string{ + {"Component A", "CA", "1", "10000"}, + {"Component B", "CB", "2", "20000"}, + {"Component C", "CC", "3", "30000"}, + } +} diff --git a/internal/usecases/cost_component.go b/internal/usecases/cost_component.go new file mode 100644 index 0000000..8005ec2 --- /dev/null +++ b/internal/usecases/cost_component.go @@ -0,0 +1,167 @@ +package usecases + +import ( + "cargo-erp-backend/internal/domain" + "cargo-erp-backend/internal/handlers/dto" + "cargo-erp-backend/pkg/datatable" + "cargo-erp-backend/pkg/helpers" + "fmt" + "reflect" + "time" +) + +type CostComponentUsecaseInterface interface { + GetAll(filter dto.CostComponentFilterAllRequest) ([]domain.CostComponent, int64, error) + GetList(dto.DataTableRequest) (dto.DataTableResponse, error) + GetByID(id string) (domain.CostComponent, error) + Create(name string, code string, inc int32, value string, costComponentGroupID string, createdBy string, merchantid *string) (domain.CostComponent, error) + Update(id string, name string, code string, inc int32, value string, costComponentGroupID string, updatedBy string) (domain.CostComponent, error) + Delete(id string) error +} + +type CostComponentUsecase struct { + Helper helpers.HelperInterface + AuthUser domain.User +} + +func NewCostComponentUsecase(helper helpers.HelperInterface, authUser domain.User) CostComponentUsecaseInterface { + return &CostComponentUsecase{Helper: helper, AuthUser: authUser} +} + +func (u *CostComponentUsecase) GetAll(filter dto.CostComponentFilterAllRequest) ([]domain.CostComponent, int64, error) { + var components []domain.CostComponent + var total int64 + + db := u.Helper.GetDB("slave") + tx := db.Model(&components) + if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" { + tx.Where(db.Where("merchant_id IS NULL").Or("merchant_id=?", u.AuthUser.MerchantID)) + } + v := reflect.ValueOf(filter) + t := reflect.TypeOf(filter) + + for i := 0; i < v.NumField(); i++ { + if v.Field(i).String() != "" { + tagKey := t.Field(i).Tag.Get("form") + tx.Where(fmt.Sprintf("%v=?", tagKey), v.Field(i)) + } + } + tx.Model(&domain.CostComponent{}).Count(&total) + tx.Order("name ASC") + if err := tx.Find(&components).Error; err != nil { + return nil, 0, err + } + return components, total, nil +} + +func (u *CostComponentUsecase) GetList(req dto.DataTableRequest) (dto.DataTableResponse, error) { + var response dto.DataTableResponse + db := u.Helper.GetDB("slave") + tx := db.Table("cost_component"). + Joins("LEFT JOIN cost_component_group ON cost_component.cost_component_group_id=cost_component_group.id"). + Joins("LEFT JOIN merchant ON cost_component.merchant_id=merchant.id") + dt := datatable.NewDatatable(tx, req) + coldef := make([]dto.DataTableColDef, 0) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component.name", + Alias: "name", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component.code", + Alias: "code", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component.inc", + Alias: "inc", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component.value", + Alias: "value", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component_group.name", + Alias: "cost_component_group_name", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component.cost_component_group_id", + Alias: "cost_component_group_id", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "merchant.id", + Alias: "merchant_id", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component.id", + Alias: "id", + }) + + response = dt.Render(coldef) + return response, nil +} + +func (u *CostComponentUsecase) GetByID(id string) (domain.CostComponent, error) { + var component domain.CostComponent + db := u.Helper.GetDB("slave") + if err := db.Where("id = ?", id).First(&component).Error; err != nil { + return domain.CostComponent{}, err + } + return component, nil +} + +func (u *CostComponentUsecase) Create(name string, code string, inc int32, value string, costComponentGroupID string, createdBy string, merchantid *string) (domain.CostComponent, error) { + now := time.Now() + component := domain.CostComponent{ + Name: &name, + Code: &code, + Inc: &inc, + Value: &value, + CostComponentGroupID: &costComponentGroupID, + MerchantID: merchantid, + CreatedBy: &createdBy, + CreatedOn: &now, + UpdatedBy: &createdBy, + UpdatedOn: &now, + } + + db := u.Helper.GetDB("master") + if err := db.Create(&component).Error; err != nil { + return domain.CostComponent{}, err + } + return component, nil +} + +func (u *CostComponentUsecase) Update(id string, name string, code string, inc int32, value string, costComponentGroupID string, updatedBy string) (domain.CostComponent, error) { + var component domain.CostComponent + db := u.Helper.GetDB("master") + if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" { + db.Where("merchant_id=?", u.AuthUser.MerchantID) + } + if err := db.Where("id = ?", id).First(&component).Error; err != nil { + return domain.CostComponent{}, err + } + + now := time.Now() + component.Name = &name + component.Code = &code + component.Inc = &inc + component.Value = &value + component.CostComponentGroupID = &costComponentGroupID + component.UpdatedBy = &updatedBy + component.UpdatedOn = &now + + if err := db.Save(&component).Error; err != nil { + return domain.CostComponent{}, err + } + return component, nil +} + +func (u *CostComponentUsecase) Delete(id string) error { + db := u.Helper.GetDB("master") + if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" { + db.Where("merchant_id=?", u.AuthUser.MerchantID) + } + if err := db.Delete(&domain.CostComponent{}, "id = ?", id).Error; err != nil { + return err + } + return nil +} diff --git a/internal/usecases/cost_component_group.go b/internal/usecases/cost_component_group.go new file mode 100644 index 0000000..0b36163 --- /dev/null +++ b/internal/usecases/cost_component_group.go @@ -0,0 +1,160 @@ +package usecases + +import ( + "cargo-erp-backend/internal/domain" + "cargo-erp-backend/internal/handlers/dto" + "cargo-erp-backend/pkg/datatable" + "cargo-erp-backend/pkg/helpers" + "fmt" + "reflect" + "time" + + "github.com/oklog/ulid/v2" +) + +type CostComponentGroupUsecaseInterface interface { + GetAll(filter dto.CostComponentGroupFilterAllRequest) ([]domain.CostComponentGroup, int64, error) + GetList(dto.DataTableRequest) (dto.DataTableResponse, error) + GetByID(id string) (domain.CostComponentGroup, error) + Create(name string, code string, inc int32, value string, createdBy string, merchantid *string) (domain.CostComponentGroup, error) + Update(id string, name string, code string, inc int32, value string, updatedBy string) (domain.CostComponentGroup, error) + Delete(id string) error +} + +type CostComponentGroupUsecase struct { + Helper helpers.HelperInterface + AuthUser domain.User +} + +func NewCostComponentGroupUsecase(helper helpers.HelperInterface, authUser domain.User) CostComponentGroupUsecaseInterface { + return &CostComponentGroupUsecase{Helper: helper, AuthUser: authUser} +} + +func (u *CostComponentGroupUsecase) GetAll(filter dto.CostComponentGroupFilterAllRequest) ([]domain.CostComponentGroup, int64, error) { + var groups []domain.CostComponentGroup + var total int64 + + db := u.Helper.GetDB("slave") + tx := db.Model(&groups) + if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" { + tx.Where(db.Where("merchant_id IS NULL").Or("merchant_id=?", u.AuthUser.MerchantID)) + } + v := reflect.ValueOf(filter) + t := reflect.TypeOf(filter) + + for i := 0; i < v.NumField(); i++ { + if v.Field(i).String() != "" { + tagKey := t.Field(i).Tag.Get("form") + tx.Where(fmt.Sprintf("%v=?", tagKey), v.Field(i)) + } + } + tx.Model(&domain.CostComponentGroup{}).Count(&total) + tx.Order("name ASC") + if err := tx.Find(&groups).Error; err != nil { + return nil, 0, err + } + return groups, total, nil +} + +func (u *CostComponentGroupUsecase) GetList(req dto.DataTableRequest) (dto.DataTableResponse, error) { + var response dto.DataTableResponse + db := u.Helper.GetDB("slave") + tx := db.Table("cost_component_group"). + Joins("LEFT JOIN merchant ON cost_component_group.merchant_id=merchant.id") + dt := datatable.NewDatatable(tx, req) + coldef := make([]dto.DataTableColDef, 0) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component_group.name", + Alias: "name", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component_group.code", + Alias: "code", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component_group.inc", + Alias: "inc", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component_group.value", + Alias: "value", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "merchant.id", + Alias: "merchant_id", + }) + coldef = append(coldef, dto.DataTableColDef{ + Field: "cost_component_group.id", + Alias: "id", + }) + + response = dt.Render(coldef) + return response, nil +} + +func (u *CostComponentGroupUsecase) GetByID(id string) (domain.CostComponentGroup, error) { + var group domain.CostComponentGroup + db := u.Helper.GetDB("slave") + if err := db.Where("id = ?", id).First(&group).Error; err != nil { + return domain.CostComponentGroup{}, err + } + return group, nil +} + +func (u *CostComponentGroupUsecase) Create(name string, code string, inc int32, value string, createdBy string, merchantid *string) (domain.CostComponentGroup, error) { + now := time.Now() + id := ulid.Make().String() + group := domain.CostComponentGroup{ + ID: id, + Name: &name, + Code: &code, + Inc: &inc, + Value: &value, + MerchantID: merchantid, + CreatedBy: &createdBy, + CreatedOn: &now, + UpdatedBy: &createdBy, + UpdatedOn: &now, + } + + db := u.Helper.GetDB("master") + if err := db.Create(&group).Error; err != nil { + return domain.CostComponentGroup{}, err + } + return group, nil +} + +func (u *CostComponentGroupUsecase) Update(id string, name string, code string, inc int32, value string, updatedBy string) (domain.CostComponentGroup, error) { + var group domain.CostComponentGroup + db := u.Helper.GetDB("master") + if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" { + db.Where("merchant_id=?", u.AuthUser.MerchantID) + } + if err := db.Where("id = ?", id).First(&group).Error; err != nil { + return domain.CostComponentGroup{}, err + } + + now := time.Now() + group.Name = &name + group.Code = &code + group.Inc = &inc + group.Value = &value + group.UpdatedBy = &updatedBy + group.UpdatedOn = &now + + if err := db.Save(&group).Error; err != nil { + return domain.CostComponentGroup{}, err + } + return group, nil +} + +func (u *CostComponentGroupUsecase) Delete(id string) error { + db := u.Helper.GetDB("master") + if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" { + db.Where("merchant_id=?", u.AuthUser.MerchantID) + } + if err := db.Delete(&domain.CostComponentGroup{}, "id = ?", id).Error; err != nil { + return err + } + return nil +} diff --git a/storage/logs/app.log b/storage/logs/app.log index 8eaadd5..d68d314 100644 --- a/storage/logs/app.log +++ b/storage/logs/app.log @@ -923,3 +923,31 @@ {"level":"info","ts":"2026-08-18T20:37:45.299+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTA0YzE2NTIyYTIyNTJjYmFjYTI0ZCIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwNGMxNjUyMmEyMjUyY2JhY2EyNGQiLCJleHAiOjE3ODcwNjI5NjYsImlhdCI6MTc4NzA1OTM2Nn0.xctXhU-k0oCqTfjGVUPaCuS0hdyK542X96Za0_Fw4LM"} {"level":"info","ts":"2026-08-18T20:37:45.397+0700","caller":"middleware/auth.go:90","msg":"Set Auth : {\"blocked\":false,\"blocked_notes\":null,\"citys_relation\":null,\"created_by\":null,\"created_on\":\"2026-08-11T20:30:48.554654Z\",\"districts_relation\":null,\"email\":\"gcx@gmail.com\",\"id\":\"19ff104c16522a2252cbaca24d\",\"is_active\":true,\"merchant_id\":\"19ff111bca6c2c382d9eb43b3c\",\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Administrator\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:30:48.554654Z\",\"users_role_id\":\"19fe814c5350d67814c3e6057c\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:51:43.16495Z\",\"id\":\"19fe814c5350d67814c3e6057c\",\"merchant_id\":null,\"merchant_relation\":{\"active\":null,\"additional_information\":null,\"address\":null,\"city_id\":null,\"city_relation\":null,\"citys_relation\":null,\"created_by\":null,\"created_by_relation\":null,\"created_on\":null,\"district_id\":null,\"district_relation\":null,\"districts_relation\":null,\"email\":null,\"id\":\"\",\"modas_relation\":null,\"name\":null,\"package_types_relation\":null,\"postal_code\":null,\"postal_codes_relation\":null,\"province_id\":null,\"province_relation\":null,\"provinces_relation\":null,\"subdistrict_id\":null,\"subdistrict_relation\":null,\"subdistricts_relation\":null,\"telp\":null,\"updated_by\":null,\"updated_on\":null,\"users_roless_relation\":null,\"userss_relation\":null},\"name\":\"Administrator\",\"role_key\":\"ADM_MERCHANT\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:51:43.16495Z\",\"userss_relation\":null}}"} {"level":"info","ts":"2026-08-18T20:37:45.428+0700","caller":"handlers/handlers.go:68","msg":"Request Success","status":200,"method":"GET","path":"/master-data/districts/template","query":"","ip":"127.0.0.1","latency":0.137240458,"user-agent":"Apidog/1.0.0 (https://apidog.com)"} +{"level":"info","ts":"2026-08-22T10:42:11.029+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T10:42:11.494+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T10:42:11.495+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T10:42:11.856+0700","caller":"database/database.go:86","msg":"DB Connection Done"} +{"level":"info","ts":"2026-08-22T10:44:00.954+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T10:44:01.411+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T10:44:01.412+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T10:44:01.838+0700","caller":"database/database.go:86","msg":"DB Connection Done"} +{"level":"info","ts":"2026-08-22T10:47:38.283+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T10:47:38.714+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T10:47:38.714+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T10:47:39.059+0700","caller":"database/database.go:86","msg":"DB Connection Done"} +{"level":"info","ts":"2026-08-22T10:48:24.393+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T10:48:24.846+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T10:48:24.846+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T10:48:25.225+0700","caller":"database/database.go:86","msg":"DB Connection Done"} +{"level":"info","ts":"2026-08-22T10:55:35.387+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T10:55:35.751+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T10:55:35.752+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T10:55:36.142+0700","caller":"database/database.go:86","msg":"DB Connection Done"} +{"level":"info","ts":"2026-08-22T11:07:22.320+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T11:07:22.726+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T11:07:22.727+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T11:07:23.109+0700","caller":"database/database.go:86","msg":"DB Connection Done"} +{"level":"info","ts":"2026-08-22T11:07:37.470+0700","caller":"database/database.go:53","msg":"Connect To Master DB"} +{"level":"info","ts":"2026-08-22T11:07:37.901+0700","caller":"database/database.go:63","msg":"DB Master Connected"} +{"level":"info","ts":"2026-08-22T11:07:37.901+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"} +{"level":"info","ts":"2026-08-22T11:07:38.241+0700","caller":"database/database.go:86","msg":"DB Connection Done"} diff --git a/storage/logs/db.log b/storage/logs/db.log index 572daab..aeecceb 100644 --- a/storage/logs/db.log +++ b/storage/logs/db.log @@ -3587,3 +3587,382 @@ {"level":"info","ts":"2026-08-18T20:36:09.759+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/pkg/datatable/datatable.go:30","elapsed":0.4042015,"rows":1,"sql":"SELECT count(*) FROM \"district\" LEFT JOIN city ON district.city_id=city.id LEFT JOIN province ON district.province_id=province.id LEFT JOIN merchant ON district.merchant_id=merchant.id"} {"level":"info","ts":"2026-08-18T20:36:09.792+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/pkg/datatable/datatable.go:81","elapsed":0.032117583,"rows":1,"sql":"SELECT count(*) FROM \"district\" LEFT JOIN city ON district.city_id=city.id LEFT JOIN province ON district.province_id=province.id LEFT JOIN merchant ON district.merchant_id=merchant.id"} {"level":"info","ts":"2026-08-18T20:36:09.856+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/pkg/datatable/datatable.go:89","elapsed":0.064178167,"rows":10,"sql":"SELECT district.name AS name,city.name AS city_name,province.name AS province_name,district.province_id AS province_id,district.city_id AS city_id,merchant.id AS merchant_id,district.id AS id FROM \"district\" LEFT JOIN city ON district.city_id=city.id LEFT JOIN province ON district.province_id=province.id LEFT JOIN merchant ON district.merchant_id=merchant.id ORDER BY district.name ASC LIMIT 10"} +{"level":"info","ts":"2026-08-22T10:42:12.289+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.131466458,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:12.405+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.11545925,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'postal_code'"} +{"level":"info","ts":"2026-08-22T10:42:12.482+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.076536625,"rows":-1,"sql":"SELECT * FROM \"postal_code\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:12.590+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.107545667,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'postal_code' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:12.690+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.099678667,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'postal_code'"} +{"level":"info","ts":"2026-08-22T10:42:12.787+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.097396416,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'postal_code'"} +{"level":"info","ts":"2026-08-22T10:42:12.909+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.121695334,"rows":6,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'postal_code'\n"} +{"level":"info","ts":"2026-08-22T10:42:12.912+0700","caller":"logger/database.go:40","msg":"got 11 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:12.965+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.053096458,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:13.013+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046941791,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users_roles'"} +{"level":"info","ts":"2026-08-22T10:42:13.062+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049435666,"rows":-1,"sql":"SELECT * FROM \"users_roles\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:13.135+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.072421459,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_roles' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:13.206+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.07141725,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_roles'"} +{"level":"info","ts":"2026-08-22T10:42:13.250+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.04387875,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users_roles'"} +{"level":"info","ts":"2026-08-22T10:42:13.305+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054835542,"rows":0,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users_roles'\n"} +{"level":"info","ts":"2026-08-22T10:42:13.307+0700","caller":"logger/database.go:40","msg":"got 8 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:13.368+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.061094459,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:13.443+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.075340959,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'package_type'"} +{"level":"info","ts":"2026-08-22T10:42:13.491+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047448167,"rows":-1,"sql":"SELECT * FROM \"package_type\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:13.557+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.065885458,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'package_type' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:13.602+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043905709,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'package_type'"} +{"level":"info","ts":"2026-08-22T10:42:13.653+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.050967542,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'package_type'"} +{"level":"info","ts":"2026-08-22T10:42:13.703+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049944541,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'package_type'\n"} +{"level":"info","ts":"2026-08-22T10:42:13.705+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:13.754+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048941917,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:13.819+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.064120375,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users_'"} +{"level":"info","ts":"2026-08-22T10:42:13.868+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048347417,"rows":-1,"sql":"SELECT * FROM \"users_\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:13.927+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058862625,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:13.974+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046482042,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_'"} +{"level":"info","ts":"2026-08-22T10:42:14.021+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047324625,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users_'"} +{"level":"info","ts":"2026-08-22T10:42:14.082+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.060131,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users_'\n"} +{"level":"info","ts":"2026-08-22T10:42:14.093+0700","caller":"logger/database.go:40","msg":"got 9 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:14.153+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059611458,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:14.228+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.074657375,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users'"} +{"level":"info","ts":"2026-08-22T10:42:14.291+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.062313458,"rows":-1,"sql":"SELECT * FROM \"users\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:14.354+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.063245583,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:14.398+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043303041,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users'"} +{"level":"info","ts":"2026-08-22T10:42:14.460+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.061959125,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users'"} +{"level":"info","ts":"2026-08-22T10:42:14.542+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.081799375,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users'\n"} +{"level":"info","ts":"2026-08-22T10:42:14.545+0700","caller":"logger/database.go:40","msg":"got 13 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:14.585+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.038029875,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:14.643+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058097042,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'merchant'"} +{"level":"info","ts":"2026-08-22T10:42:14.690+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046542542,"rows":-1,"sql":"SELECT * FROM \"merchant\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:14.760+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.068796917,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'merchant' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:14.808+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047534375,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'merchant'"} +{"level":"info","ts":"2026-08-22T10:42:14.863+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054392833,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'merchant'"} +{"level":"info","ts":"2026-08-22T10:42:14.938+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.071571042,"rows":10,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'merchant'\n"} +{"level":"info","ts":"2026-08-22T10:42:14.942+0700","caller":"logger/database.go:40","msg":"got 16 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:14.987+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044326,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:15.038+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.051361583,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'moda'"} +{"level":"info","ts":"2026-08-22T10:42:15.091+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.052081459,"rows":-1,"sql":"SELECT * FROM \"moda\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:15.155+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.063301375,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'moda' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:15.204+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0447865,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'moda'"} +{"level":"info","ts":"2026-08-22T10:42:15.273+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.068811375,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'moda'"} +{"level":"info","ts":"2026-08-22T10:42:15.328+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054517167,"rows":3,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'moda'\n"} +{"level":"info","ts":"2026-08-22T10:42:15.336+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:15.384+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046499959,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:15.444+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.060032583,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'province'"} +{"level":"info","ts":"2026-08-22T10:42:15.500+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055037834,"rows":-1,"sql":"SELECT * FROM \"province\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:15.592+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.091480625,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'province' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:15.648+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.056497416,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'province'"} +{"level":"info","ts":"2026-08-22T10:42:15.690+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.041203166,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'province'"} +{"level":"info","ts":"2026-08-22T10:42:15.759+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.06916575,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'province'\n"} +{"level":"info","ts":"2026-08-22T10:42:15.760+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:15.809+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048932083,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:15.854+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.04515775,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'city'"} +{"level":"info","ts":"2026-08-22T10:42:15.912+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.057289292,"rows":-1,"sql":"SELECT * FROM \"city\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:15.979+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.066737708,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'city' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:16.028+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049109334,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'city'"} +{"level":"info","ts":"2026-08-22T10:42:16.070+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.041929708,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'city'"} +{"level":"info","ts":"2026-08-22T10:42:16.129+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059008542,"rows":3,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'city'\n"} +{"level":"info","ts":"2026-08-22T10:42:16.130+0700","caller":"logger/database.go:40","msg":"got 8 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:16.175+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044854416,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:16.234+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058427833,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T10:42:16.294+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0599875,"rows":-1,"sql":"SELECT * FROM \"subdistrict\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:16.354+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059277708,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'subdistrict' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:16.391+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.036948791,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T10:42:16.431+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.040285375,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T10:42:16.470+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.038604625,"rows":5,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'subdistrict'\n"} +{"level":"info","ts":"2026-08-22T10:42:16.472+0700","caller":"logger/database.go:40","msg":"got 10 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:16.537+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.064844958,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:16.588+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.050759417,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'cost_component'"} +{"level":"info","ts":"2026-08-22T10:42:16.631+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.04321875,"rows":-1,"sql":"SELECT * FROM \"cost_component\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:16.694+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.062694667,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:16.743+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048545,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component'"} +{"level":"info","ts":"2026-08-22T10:42:16.791+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.04769775,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'cost_component'"} +{"level":"info","ts":"2026-08-22T10:42:16.857+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.065435709,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'cost_component'\n"} +{"level":"info","ts":"2026-08-22T10:42:16.859+0700","caller":"logger/database.go:40","msg":"got 11 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:16.904+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044150417,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:42:16.967+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.063464125,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'district'"} +{"level":"info","ts":"2026-08-22T10:42:17.043+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.075472584,"rows":-1,"sql":"SELECT * FROM \"district\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:42:17.114+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.07086225,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'district' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:42:17.170+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055642,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'district'"} +{"level":"info","ts":"2026-08-22T10:42:17.219+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048993708,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'district'"} +{"level":"info","ts":"2026-08-22T10:42:17.287+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.067799416,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'district'\n"} +{"level":"info","ts":"2026-08-22T10:42:17.288+0700","caller":"logger/database.go:40","msg":"got 9 columns from table "} +{"level":"info","ts":"2026-08-22T10:42:17.288+0700","caller":"logger/database.go:40","msg":"Start generating code."} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.UsersRole}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users_roles.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Users}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users_.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.City}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/city.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.PackageType}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/package_type.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.User}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.CostComponent}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/cost_component.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.District}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/district.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.328+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.PostalCode}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/postal_code.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.338+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Subdistrict}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/subdistrict.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.338+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Province}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/province.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.338+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Merchant}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/merchant.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.338+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Moda}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/moda.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.382+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/postal_code.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.383+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users_roles.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.383+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/moda.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.387+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/city.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.388+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/province.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.390+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/cost_component.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.390+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/district.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.390+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/package_type.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.397+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.397+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users_.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.399+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/subdistrict.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.400+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/merchant.gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.412+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/gen.go"} +{"level":"info","ts":"2026-08-22T10:42:17.412+0700","caller":"logger/database.go:40","msg":"Generate code done."} +{"level":"info","ts":"2026-08-22T10:44:02.393+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.147436834,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:02.516+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.122230208,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'postal_code'"} +{"level":"info","ts":"2026-08-22T10:44:02.563+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046737291,"rows":-1,"sql":"SELECT * FROM \"postal_code\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:02.674+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.110786583,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'postal_code' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:02.819+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.143745917,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'postal_code'"} +{"level":"info","ts":"2026-08-22T10:44:02.952+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.13206925,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'postal_code'"} +{"level":"info","ts":"2026-08-22T10:44:03.066+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.114301875,"rows":6,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'postal_code'\n"} +{"level":"info","ts":"2026-08-22T10:44:03.067+0700","caller":"logger/database.go:40","msg":"got 11 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:03.122+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.053907458,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:03.196+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.07384925,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users_roles'"} +{"level":"info","ts":"2026-08-22T10:44:03.253+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.056981709,"rows":-1,"sql":"SELECT * FROM \"users_roles\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:03.328+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.074168375,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_roles' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:03.389+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.060523416,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_roles'"} +{"level":"info","ts":"2026-08-22T10:44:03.443+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.053300291,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users_roles'"} +{"level":"info","ts":"2026-08-22T10:44:03.489+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046237125,"rows":0,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users_roles'\n"} +{"level":"info","ts":"2026-08-22T10:44:03.493+0700","caller":"logger/database.go:40","msg":"got 8 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:03.541+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047566084,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:03.602+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.060989917,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'package_type'"} +{"level":"info","ts":"2026-08-22T10:44:03.651+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048833833,"rows":-1,"sql":"SELECT * FROM \"package_type\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:03.727+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.07592675,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'package_type' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:03.764+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.036162,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'package_type'"} +{"level":"info","ts":"2026-08-22T10:44:03.808+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043613292,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'package_type'"} +{"level":"info","ts":"2026-08-22T10:44:03.845+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.03693225,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'package_type'\n"} +{"level":"info","ts":"2026-08-22T10:44:03.847+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:03.888+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.039418917,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:03.945+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0573375,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users_'"} +{"level":"info","ts":"2026-08-22T10:44:04.011+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.064469,"rows":-1,"sql":"SELECT * FROM \"users_\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:04.080+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.069307417,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:04.128+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047171709,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_'"} +{"level":"info","ts":"2026-08-22T10:44:04.165+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.037006875,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users_'"} +{"level":"info","ts":"2026-08-22T10:44:04.213+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047612,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users_'\n"} +{"level":"info","ts":"2026-08-22T10:44:04.217+0700","caller":"logger/database.go:40","msg":"got 9 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:04.277+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059710458,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:04.323+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.045470584,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users'"} +{"level":"info","ts":"2026-08-22T10:44:04.378+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054038625,"rows":-1,"sql":"SELECT * FROM \"users\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:04.448+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.069456541,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:04.501+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.053629417,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users'"} +{"level":"info","ts":"2026-08-22T10:44:04.551+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049650125,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users'"} +{"level":"info","ts":"2026-08-22T10:44:04.614+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.062399291,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users'\n"} +{"level":"info","ts":"2026-08-22T10:44:04.616+0700","caller":"logger/database.go:40","msg":"got 13 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:04.687+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.07167525,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:04.735+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.04770075,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'merchant'"} +{"level":"info","ts":"2026-08-22T10:44:04.791+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055245958,"rows":-1,"sql":"SELECT * FROM \"merchant\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:04.847+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055588291,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'merchant' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:04.906+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058637541,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'merchant'"} +{"level":"info","ts":"2026-08-22T10:44:04.951+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.045278542,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'merchant'"} +{"level":"info","ts":"2026-08-22T10:44:05.012+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.060251666,"rows":10,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'merchant'\n"} +{"level":"info","ts":"2026-08-22T10:44:05.016+0700","caller":"logger/database.go:40","msg":"got 16 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:05.060+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043366333,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:05.122+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.062291417,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'moda'"} +{"level":"info","ts":"2026-08-22T10:44:05.192+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.069203125,"rows":-1,"sql":"SELECT * FROM \"moda\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:05.276+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.083827917,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'moda' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:05.328+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.051666792,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'moda'"} +{"level":"info","ts":"2026-08-22T10:44:05.368+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.039679417,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'moda'"} +{"level":"info","ts":"2026-08-22T10:44:05.434+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.066077208,"rows":3,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'moda'\n"} +{"level":"info","ts":"2026-08-22T10:44:05.437+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:05.509+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.071085792,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:05.570+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.06061075,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'province'"} +{"level":"info","ts":"2026-08-22T10:44:05.623+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.052888458,"rows":-1,"sql":"SELECT * FROM \"province\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:05.679+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055626167,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'province' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:05.739+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059031917,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'province'"} +{"level":"info","ts":"2026-08-22T10:44:05.810+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.070279,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'province'"} +{"level":"info","ts":"2026-08-22T10:44:05.865+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054572625,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'province'\n"} +{"level":"info","ts":"2026-08-22T10:44:05.866+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:05.913+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046999042,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:05.968+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054506708,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'city'"} +{"level":"info","ts":"2026-08-22T10:44:06.003+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.035312125,"rows":-1,"sql":"SELECT * FROM \"city\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:06.049+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.045856875,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'city' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:06.106+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.056145291,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'city'"} +{"level":"info","ts":"2026-08-22T10:44:06.153+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046878917,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'city'"} +{"level":"info","ts":"2026-08-22T10:44:06.219+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.062261792,"rows":3,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'city'\n"} +{"level":"info","ts":"2026-08-22T10:44:06.234+0700","caller":"logger/database.go:40","msg":"got 8 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:06.290+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0554465,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:06.349+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058275167,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T10:44:06.393+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044349625,"rows":-1,"sql":"SELECT * FROM \"subdistrict\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:06.456+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.062130167,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'subdistrict' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:06.503+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047647208,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T10:44:06.552+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048215,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T10:44:06.619+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.06644275,"rows":5,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'subdistrict'\n"} +{"level":"info","ts":"2026-08-22T10:44:06.620+0700","caller":"logger/database.go:40","msg":"got 10 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:06.663+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043113416,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:06.712+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048554792,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'cost_component'"} +{"level":"info","ts":"2026-08-22T10:44:06.786+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.073692333,"rows":-1,"sql":"SELECT * FROM \"cost_component\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:06.867+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.080644,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:06.945+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.077652459,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component'"} +{"level":"info","ts":"2026-08-22T10:44:07.022+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.076933875,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'cost_component'"} +{"level":"info","ts":"2026-08-22T10:44:07.065+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.042764875,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'cost_component'\n"} +{"level":"info","ts":"2026-08-22T10:44:07.067+0700","caller":"logger/database.go:40","msg":"got 11 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:07.115+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047127084,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T10:44:07.177+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.061287667,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'district'"} +{"level":"info","ts":"2026-08-22T10:44:07.237+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059917417,"rows":-1,"sql":"SELECT * FROM \"district\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T10:44:07.286+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048919709,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'district' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T10:44:07.330+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.042706625,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'district'"} +{"level":"info","ts":"2026-08-22T10:44:07.398+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.067402208,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'district'"} +{"level":"info","ts":"2026-08-22T10:44:07.453+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.05486275,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'district'\n"} +{"level":"info","ts":"2026-08-22T10:44:07.455+0700","caller":"logger/database.go:40","msg":"got 9 columns from table "} +{"level":"info","ts":"2026-08-22T10:44:07.456+0700","caller":"logger/database.go:40","msg":"Start generating code."} +{"level":"info","ts":"2026-08-22T10:44:07.485+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.User}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.485+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.City}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/city.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.490+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Province}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/province.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.491+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.CostComponent}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/cost_component.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.491+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Subdistrict}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/subdistrict.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.491+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Merchant}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/merchant.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.494+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.PackageType}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/package_type.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.496+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.PostalCode}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/postal_code.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.503+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Users}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users_.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.503+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.UsersRole}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users_roles.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.503+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Moda}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/moda.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.505+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.District}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/district.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.574+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users_roles.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.575+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/package_type.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.575+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/moda.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.578+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users_.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.580+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/province.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.580+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/city.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.581+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.584+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/merchant.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.588+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/cost_component.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.589+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/district.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.589+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/subdistrict.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.591+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/postal_code.gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.600+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/gen.go"} +{"level":"info","ts":"2026-08-22T10:44:07.600+0700","caller":"logger/database.go:40","msg":"Generate code done."} +{"level":"info","ts":"2026-08-22T11:07:38.674+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.104392417,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:38.782+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.106339083,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'postal_code'"} +{"level":"info","ts":"2026-08-22T11:07:38.837+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054324875,"rows":-1,"sql":"SELECT * FROM \"postal_code\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:38.970+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.131676375,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'postal_code' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:39.080+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.109503459,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'postal_code'"} +{"level":"info","ts":"2026-08-22T11:07:39.204+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.123495459,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'postal_code'"} +{"level":"info","ts":"2026-08-22T11:07:39.325+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.12038975,"rows":6,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'postal_code'\n"} +{"level":"info","ts":"2026-08-22T11:07:39.328+0700","caller":"logger/database.go:40","msg":"got 11 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:39.365+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.035523166,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:39.421+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055711292,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users_roles'"} +{"level":"info","ts":"2026-08-22T11:07:39.473+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.051499791,"rows":-1,"sql":"SELECT * FROM \"users_roles\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:39.526+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.051919959,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_roles' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:39.589+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.063024208,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_roles'"} +{"level":"info","ts":"2026-08-22T11:07:39.633+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044005708,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users_roles'"} +{"level":"info","ts":"2026-08-22T11:07:39.692+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.057706417,"rows":0,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users_roles'\n"} +{"level":"info","ts":"2026-08-22T11:07:39.704+0700","caller":"logger/database.go:40","msg":"got 8 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:39.761+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055526875,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:39.827+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.066379791,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'cost_component_group'"} +{"level":"info","ts":"2026-08-22T11:07:39.883+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055718375,"rows":-1,"sql":"SELECT * FROM \"cost_component_group\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:39.930+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047053125,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component_group' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:39.980+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049988208,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component_group'"} +{"level":"info","ts":"2026-08-22T11:07:40.031+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049925125,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'cost_component_group'"} +{"level":"info","ts":"2026-08-22T11:07:40.094+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.063270084,"rows":0,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'cost_component_group'\n"} +{"level":"info","ts":"2026-08-22T11:07:40.097+0700","caller":"logger/database.go:40","msg":"got 10 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:40.131+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.032726583,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:40.188+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.05659875,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'package_type'"} +{"level":"info","ts":"2026-08-22T11:07:40.233+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044394417,"rows":-1,"sql":"SELECT * FROM \"package_type\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:40.315+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0817375,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'package_type' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:40.365+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049753791,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'package_type'"} +{"level":"info","ts":"2026-08-22T11:07:40.416+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.050424292,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'package_type'"} +{"level":"info","ts":"2026-08-22T11:07:40.453+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.03680625,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'package_type'\n"} +{"level":"info","ts":"2026-08-22T11:07:40.455+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:40.493+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.038129792,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:40.547+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.052920084,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users_'"} +{"level":"info","ts":"2026-08-22T11:07:40.609+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.061442959,"rows":-1,"sql":"SELECT * FROM \"users_\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:40.674+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.064485833,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:40.721+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046413583,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users_'"} +{"level":"info","ts":"2026-08-22T11:07:40.774+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.053541708,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users_'"} +{"level":"info","ts":"2026-08-22T11:07:40.833+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058369209,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users_'\n"} +{"level":"info","ts":"2026-08-22T11:07:40.837+0700","caller":"logger/database.go:40","msg":"got 9 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:40.884+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046400542,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:40.940+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055370042,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'users'"} +{"level":"info","ts":"2026-08-22T11:07:40.981+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.040536708,"rows":-1,"sql":"SELECT * FROM \"users\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:41.051+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.069333125,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:41.099+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.047927125,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'users'"} +{"level":"info","ts":"2026-08-22T11:07:41.166+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.066396334,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'users'"} +{"level":"info","ts":"2026-08-22T11:07:41.205+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.038623459,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'users'\n"} +{"level":"info","ts":"2026-08-22T11:07:41.209+0700","caller":"logger/database.go:40","msg":"got 13 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:41.262+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.052268417,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:41.327+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.064396292,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'merchant'"} +{"level":"info","ts":"2026-08-22T11:07:41.419+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046014375,"rows":-1,"sql":"SELECT * FROM \"merchant\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:41.459+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.039954792,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'merchant' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:41.501+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.041511166,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'merchant'"} +{"level":"info","ts":"2026-08-22T11:07:41.554+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.053184667,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'merchant'"} +{"level":"info","ts":"2026-08-22T11:07:41.609+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054446583,"rows":10,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'merchant'\n"} +{"level":"info","ts":"2026-08-22T11:07:41.613+0700","caller":"logger/database.go:40","msg":"got 16 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:41.775+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.160013334,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:41.844+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.068926208,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'moda'"} +{"level":"info","ts":"2026-08-22T11:07:41.899+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054914416,"rows":-1,"sql":"SELECT * FROM \"moda\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:41.939+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.03999075,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'moda' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:41.988+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.04886275,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'moda'"} +{"level":"info","ts":"2026-08-22T11:07:42.040+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.051329875,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'moda'"} +{"level":"info","ts":"2026-08-22T11:07:42.086+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.046565833,"rows":3,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'moda'\n"} +{"level":"info","ts":"2026-08-22T11:07:42.088+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:42.139+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.050191667,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:42.196+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.05707875,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'province'"} +{"level":"info","ts":"2026-08-22T11:07:42.246+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049340958,"rows":-1,"sql":"SELECT * FROM \"province\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:42.322+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.075480833,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'province' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:42.387+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.065338166,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'province'"} +{"level":"info","ts":"2026-08-22T11:07:42.443+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055684125,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'province'"} +{"level":"info","ts":"2026-08-22T11:07:42.496+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0519075,"rows":2,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'province'\n"} +{"level":"info","ts":"2026-08-22T11:07:42.497+0700","caller":"logger/database.go:40","msg":"got 7 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:42.540+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.042018625,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:42.573+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.032816,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'city'"} +{"level":"info","ts":"2026-08-22T11:07:42.619+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.045717209,"rows":-1,"sql":"SELECT * FROM \"city\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:42.663+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043517417,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'city' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:42.730+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.066235416,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'city'"} +{"level":"info","ts":"2026-08-22T11:07:42.779+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.049216958,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'city'"} +{"level":"info","ts":"2026-08-22T11:07:42.812+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.032077583,"rows":3,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'city'\n"} +{"level":"info","ts":"2026-08-22T11:07:42.814+0700","caller":"logger/database.go:40","msg":"got 8 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:42.859+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044134834,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:42.908+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.048123209,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T11:07:42.963+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.055121625,"rows":-1,"sql":"SELECT * FROM \"subdistrict\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:43.019+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054940042,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'subdistrict' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:43.060+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.040661667,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T11:07:43.119+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.058550375,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'subdistrict'"} +{"level":"info","ts":"2026-08-22T11:07:43.159+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.039882541,"rows":5,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'subdistrict'\n"} +{"level":"info","ts":"2026-08-22T11:07:43.162+0700","caller":"logger/database.go:40","msg":"got 10 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:43.199+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.036632791,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:43.243+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.044150875,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'cost_component'"} +{"level":"info","ts":"2026-08-22T11:07:43.281+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.036691291,"rows":-1,"sql":"SELECT * FROM \"cost_component\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:43.323+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.041822625,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:43.359+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.035911083,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'cost_component'"} +{"level":"info","ts":"2026-08-22T11:07:43.419+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.059761541,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'cost_component'"} +{"level":"info","ts":"2026-08-22T11:07:43.463+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.043627625,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'cost_component'\n"} +{"level":"info","ts":"2026-08-22T11:07:43.467+0700","caller":"logger/database.go:40","msg":"got 11 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:43.523+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.054757541,"rows":1,"sql":"SELECT CURRENT_DATABASE()"} +{"level":"info","ts":"2026-08-22T11:07:43.581+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.057987958,"rows":-1,"sql":"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = 'cargo_erp' AND table_schema = CURRENT_SCHEMA() AND table_name = 'district'"} +{"level":"info","ts":"2026-08-22T11:07:43.633+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.051363833,"rows":-1,"sql":"SELECT * FROM \"district\" LIMIT 5"} +{"level":"info","ts":"2026-08-22T11:07:43.691+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.05725075,"rows":-1,"sql":"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'district' AND constraint_type = 'UNIQUE'"} +{"level":"info","ts":"2026-08-22T11:07:43.741+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0502355,"rows":-1,"sql":"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = 'cargo_erp' AND c.table_schema = CURRENT_SCHEMA() AND c.table_name = 'district'"} +{"level":"info","ts":"2026-08-22T11:07:43.797+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.0557265,"rows":-1,"sql":"SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = CURRENT_SCHEMA())\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = 'district'"} +{"level":"info","ts":"2026-08-22T11:07:43.844+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/migrations/generatemodel.go:128","elapsed":0.045944458,"rows":4,"sql":"\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = 'district'\n"} +{"level":"info","ts":"2026-08-22T11:07:43.846+0700","caller":"logger/database.go:40","msg":"got 9 columns from table "} +{"level":"info","ts":"2026-08-22T11:07:43.846+0700","caller":"logger/database.go:40","msg":"Start generating code."} +{"level":"info","ts":"2026-08-22T11:07:43.879+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.PostalCode}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/postal_code.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.879+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.User}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.879+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.District}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/district.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.879+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Subdistrict}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/subdistrict.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.881+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.CostComponentGroup}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/cost_component_group.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.881+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.CostComponent}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/cost_component.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.882+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.City}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/city.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.883+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Province}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/province.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.892+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.PackageType}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/package_type.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.892+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Merchant}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/merchant.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.892+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Users}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users_.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.893+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.UsersRole}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/users_roles.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.893+0700","caller":"logger/database.go:40","msg":"generate model file(table -> {domain.Moda}): /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/moda.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.942+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users_.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.946+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/province.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.947+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/district.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.951+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/subdistrict.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.952+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/city.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.953+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/cost_component.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.953+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.953+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/users_roles.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.958+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/postal_code.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.959+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/cost_component_group.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.962+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/package_type.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.962+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/merchant.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.965+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/moda.gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.972+0700","caller":"logger/database.go:40","msg":"generate query file: /Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/cmd/api/internal/domain/query_utils/gen.go"} +{"level":"info","ts":"2026-08-22T11:07:43.972+0700","caller":"logger/database.go:40","msg":"Generate code done."}