This commit is contained in:
parent
5cecc9c43c
commit
622045f3fc
@ -1,35 +0,0 @@
|
|||||||
// 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 <city>
|
|
||||||
type City 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: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"`
|
|
||||||
PostalCodes_Relation []PostalCode `gorm:"foreignKey:city_id;references:id" json:"postal_codes_relation"`
|
|
||||||
Subdistricts_Relation []Subdistrict `gorm:"foreignKey:city_id;references:id" json:"subdistricts_relation"`
|
|
||||||
Districts_Relation []District `gorm:"foreignKey:city_id;references:id" json:"districts_relation"`
|
|
||||||
Province_Relation Province `gorm:"foreignKey:province_id;references:id" json:"province_relation"`
|
|
||||||
Merchants_Relation []Merchant `gorm:"foreignKey:city_id;references:id" json:"merchants_relation"`
|
|
||||||
CreatedBy_Relation User `gorm:"foreignKey:created_by;references:id" json:"created_by_relation"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName City's table name
|
|
||||||
func (*City) TableName() string {
|
|
||||||
return TableNameCity
|
|
||||||
}
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
// 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 <cost_component>
|
|
||||||
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"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName CostComponent's table name
|
|
||||||
func (*CostComponent) TableName() string {
|
|
||||||
return TableNameCostComponent
|
|
||||||
}
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
// 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 <district>
|
|
||||||
type District 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: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"`
|
|
||||||
PostalCodes_Relation []PostalCode `gorm:"foreignKey:district_id;references:id" json:"postal_codes_relation"`
|
|
||||||
Subdistricts_Relation []Subdistrict `gorm:"foreignKey:district_id;references:id" json:"subdistricts_relation"`
|
|
||||||
Province_Relation Province `gorm:"foreignKey:province_id;references:id" json:"province_relation"`
|
|
||||||
City_Relation City `gorm:"foreignKey:city_id;references:id" json:"city_relation"`
|
|
||||||
Merchants_Relation []Merchant `gorm:"foreignKey:district_id;references:id" json:"merchants_relation"`
|
|
||||||
CreatedBy_Relation User `gorm:"foreignKey:created_by;references:id" json:"created_by_relation"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName District's table name
|
|
||||||
func (*District) TableName() string {
|
|
||||||
return TableNameDistrict
|
|
||||||
}
|
|
||||||
@ -1,50 +0,0 @@
|
|||||||
// 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 <merchant>
|
|
||||||
type Merchant 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: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"`
|
|
||||||
Province_Relation *Province `gorm:"foreignKey:province_id;references:id" json:"province_relation"`
|
|
||||||
City_Relation *City `gorm:"foreignKey:city_id;references:id" json:"city_relation"`
|
|
||||||
District_Relation *District `gorm:"foreignKey:district_id;references:id" json:"district_relation"`
|
|
||||||
Subdistrict_Relation *Subdistrict `gorm:"foreignKey:subdistrict_id;references:id" json:"subdistrict_relation"`
|
|
||||||
UsersRoless_Relation []*UsersRole `gorm:"foreignKey:merchant_id;references:id" json:"users_roless_relation"`
|
|
||||||
Modas_Relation []*Moda `gorm:"foreignKey:merchant_id;references:id" json:"modas_relation"`
|
|
||||||
PackageTypes_Relation []*PackageType `gorm:"foreignKey:merchant_id;references:id" json:"package_types_relation"`
|
|
||||||
Userss_Relation []*User `gorm:"foreignKey:merchant_id;references:id" json:"userss_relation"`
|
|
||||||
CreatedBy_Relation *User `gorm:"foreignKey:created_by;references:id" json:"created_by_relation"`
|
|
||||||
Provinces_Relation []*Province `gorm:"foreignKey:merchant_id;references:id" json:"provinces_relation"`
|
|
||||||
Citys_Relation []*City `gorm:"foreignKey:merchant_id;references:id" json:"citys_relation"`
|
|
||||||
Districts_Relation []*District `gorm:"foreignKey:merchant_id;references:id" json:"districts_relation"`
|
|
||||||
Subdistricts_Relation []*Subdistrict `gorm:"foreignKey:merchant_id;references:id" json:"subdistricts_relation"`
|
|
||||||
PostalCodes_Relation []*PostalCode `gorm:"foreignKey:merchant_id;references:id" json:"postal_codes_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName Merchant's table name
|
|
||||||
func (*Merchant) TableName() string {
|
|
||||||
return TableNameMerchant
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
// 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 <moda>
|
|
||||||
type Moda 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: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"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName Moda's table name
|
|
||||||
func (*Moda) TableName() string {
|
|
||||||
return TableNameModa
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
// 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 <package_type>
|
|
||||||
type PackageType 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: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"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName PackageType's table name
|
|
||||||
func (*PackageType) TableName() string {
|
|
||||||
return TableNamePackageType
|
|
||||||
}
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
// 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 <postal_code>
|
|
||||||
type PostalCode struct {
|
|
||||||
ID string `gorm:"column:id;type:character(26);primaryKey;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"`
|
|
||||||
Province_Relation Province `gorm:"foreignKey:province_id;references:id" json:"province_relation"`
|
|
||||||
City_Relation City `gorm:"foreignKey:city_id;references:id" json:"city_relation"`
|
|
||||||
District_Relation District `gorm:"foreignKey:district_id;references:id" json:"district_relation"`
|
|
||||||
Subdistrict_Relation Subdistrict `gorm:"foreignKey:subdistrict_id;references:id" json:"subdistrict_relation"`
|
|
||||||
CreatedBy_Relation User `gorm:"foreignKey:created_by;references:id" json:"created_by_relation"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName PostalCode's table name
|
|
||||||
func (*PostalCode) TableName() string {
|
|
||||||
return TableNamePostalCode
|
|
||||||
}
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
// 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 <province>
|
|
||||||
type Province 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: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"`
|
|
||||||
PostalCodes_Relation []PostalCode `gorm:"foreignKey:province_id;references:id" json:"postal_codes_relation"`
|
|
||||||
Subdistricts_Relation []Subdistrict `gorm:"foreignKey:province_id;references:id" json:"subdistricts_relation"`
|
|
||||||
Districts_Relation []District `gorm:"foreignKey:province_id;references:id" json:"districts_relation"`
|
|
||||||
Citys_Relation []City `gorm:"foreignKey:province_id;references:id" json:"citys_relation"`
|
|
||||||
Merchants_Relation []Merchant `gorm:"foreignKey:province_id;references:id" json:"merchants_relation"`
|
|
||||||
CreatedBy_Relation User `gorm:"foreignKey:created_by;references:id" json:"created_by_relation"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName Province's table name
|
|
||||||
func (*Province) TableName() string {
|
|
||||||
return TableNameProvince
|
|
||||||
}
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
// 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 <subdistrict>
|
|
||||||
type Subdistrict 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: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"`
|
|
||||||
PostalCodes_Relation []PostalCode `gorm:"foreignKey:subdistrict_id;references:id" json:"postal_codes_relation"`
|
|
||||||
Province_Relation Province `gorm:"foreignKey:province_id;references:id" json:"province_relation"`
|
|
||||||
City_Relation City `gorm:"foreignKey:city_id;references:id" json:"city_relation"`
|
|
||||||
District_Relation District `gorm:"foreignKey:district_id;references:id" json:"district_relation"`
|
|
||||||
Merchants_Relation []Merchant `gorm:"foreignKey:subdistrict_id;references:id" json:"merchants_relation"`
|
|
||||||
CreatedBy_Relation User `gorm:"foreignKey:created_by;references:id" json:"created_by_relation"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName Subdistrict's table name
|
|
||||||
func (*Subdistrict) TableName() string {
|
|
||||||
return TableNameSubdistrict
|
|
||||||
}
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
// 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 <users>
|
|
||||||
type User struct {
|
|
||||||
ID string `gorm:"column:id;type:character(26);primaryKey;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"`
|
|
||||||
Merchant_Relation *Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
UsersRole_Relation UsersRole `gorm:"foreignKey:users_role_id;references:id" json:"users_role_relation"`
|
|
||||||
Merchants_Relation []Merchant `gorm:"foreignKey:created_by;references:id" json:"merchants_relation"`
|
|
||||||
Provinces_Relation []Province `gorm:"foreignKey:created_by;references:id" json:"provinces_relation"`
|
|
||||||
Citys_Relation []City `gorm:"foreignKey:created_by;references:id" json:"citys_relation"`
|
|
||||||
Districts_Relation []District `gorm:"foreignKey:created_by;references:id" json:"districts_relation"`
|
|
||||||
Subdistricts_Relation []Subdistrict `gorm:"foreignKey:created_by;references:id" json:"subdistricts_relation"`
|
|
||||||
PostalCodes_Relation []PostalCode `gorm:"foreignKey:created_by;references:id" json:"postal_codes_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName User's table name
|
|
||||||
func (*User) TableName() string {
|
|
||||||
return TableNameUser
|
|
||||||
}
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
// 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 <users_>
|
|
||||||
type Users struct {
|
|
||||||
ID string `gorm:"column:id;type:uuid;primaryKey;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
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
// 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 <users_roles>
|
|
||||||
type UsersRole struct {
|
|
||||||
ID string `gorm:"column:id;type:character(26);primaryKey;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"`
|
|
||||||
Merchant_Relation Merchant `gorm:"foreignKey:merchant_id;references:id" json:"merchant_relation"`
|
|
||||||
Userss_Relation []User `gorm:"foreignKey:users_role_id;references:id" json:"userss_relation"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// TableName UsersRole's table name
|
|
||||||
func (*UsersRole) TableName() string {
|
|
||||||
return TableNameUsersRole
|
|
||||||
}
|
|
||||||
BIN
internal/.DS_Store
vendored
Normal file
BIN
internal/.DS_Store
vendored
Normal file
Binary file not shown.
@ -15,9 +15,9 @@ type Province struct {
|
|||||||
ID string `gorm:"column:id;type:character(26);primaryKey;default:generate_ulid()" json:"id"`
|
ID string `gorm:"column:id;type:character(26);primaryKey;default:generate_ulid()" json:"id"`
|
||||||
Name *string `gorm:"column:name;type:character varying(255);index:province_name_idx,priority:1" json:"name"`
|
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"`
|
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"`
|
CreatedOn *time.Time `gorm:"autoCreateTime;column:created_on;type:timestamp without time zone" json:"created_on"`
|
||||||
UpdatedBy *string `gorm:"column:updated_by;type:character(26)" json:"updated_by"`
|
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"`
|
UpdatedOn *time.Time `gorm:"autoUpdateTime;column:updated_on;type:timestamp without time zone" json:"updated_on"`
|
||||||
MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"`
|
MerchantID *string `gorm:"column:merchant_id;type:character(26)" json:"merchant_id"`
|
||||||
PostalCodes_Relation []PostalCode `gorm:"foreignKey:province_id;references:id" json:"postal_codes_relation"`
|
PostalCodes_Relation []PostalCode `gorm:"foreignKey:province_id;references:id" json:"postal_codes_relation"`
|
||||||
Subdistricts_Relation []Subdistrict `gorm:"foreignKey:province_id;references:id" json:"subdistricts_relation"`
|
Subdistricts_Relation []Subdistrict `gorm:"foreignKey:province_id;references:id" json:"subdistricts_relation"`
|
||||||
|
|||||||
40
internal/handlers/dto/datatable.go
Normal file
40
internal/handlers/dto/datatable.go
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package dto
|
||||||
|
|
||||||
|
type DataTableRequest struct {
|
||||||
|
Draw int `json:"draw" binding:"required"`
|
||||||
|
Start int `json:"start"`
|
||||||
|
Length int `json:"length"`
|
||||||
|
Search DatatableSearchCriteria `json:"search"`
|
||||||
|
Order []DatatableOrderQuery `json:"order"`
|
||||||
|
Columns []DatatableColumnConfig `json:"columns"`
|
||||||
|
AdditionalFilter map[string]interface{} `json:"additional_filter"`
|
||||||
|
}
|
||||||
|
type DatatableOrderQuery struct {
|
||||||
|
Column int `json:"column"` // Indeks kolom yang di-sort (dimulai dari 0)
|
||||||
|
Dir string `json:"dir"` // Arah sorting: "asc" atau "desc"
|
||||||
|
}
|
||||||
|
type DatatableSearchCriteria struct {
|
||||||
|
Value string `json:"value"`
|
||||||
|
Regex bool `json:"regex"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DatatableColumnConfig struct {
|
||||||
|
Data string `json:"data"` // Nama properti data (contoh: "name")
|
||||||
|
Name string `json:"name"` // Nama kolom opsional yang diset di frontend
|
||||||
|
Searchable bool `json:"searchable"` // Apakah kolom ini bisa dicari
|
||||||
|
Orderable bool `json:"orderable"` // Apakah kolom ini bisa di-sort
|
||||||
|
Search DatatableSearchCriteria `json:"search"` // Pencarian spesifik khusus untuk kolom ini saja
|
||||||
|
}
|
||||||
|
|
||||||
|
type DataTableResponse struct {
|
||||||
|
Draw int `json:"draw"`
|
||||||
|
RecordsTotal int64 `json:"recordsTotal"`
|
||||||
|
RecordsFiltered int64 `json:"recordsFiltered"`
|
||||||
|
Data []map[string]interface{} `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DataTableColDef struct {
|
||||||
|
Field string `json:"field"`
|
||||||
|
Alias string `json:"alias"`
|
||||||
|
Formatter *func() `json:"formatter"`
|
||||||
|
}
|
||||||
9
internal/handlers/dto/province.go
Normal file
9
internal/handlers/dto/province.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package dto
|
||||||
|
|
||||||
|
type CreateProvinceRequest struct {
|
||||||
|
Name string `json:"name" binding:"required,min=2"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UpdateProvinceRequest struct {
|
||||||
|
Name string `json:"name" binding:"required,min=2"`
|
||||||
|
}
|
||||||
@ -2,6 +2,8 @@ package handlers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"cargo-erp-backend/internal/handlers/router/auth"
|
"cargo-erp-backend/internal/handlers/router/auth"
|
||||||
|
"cargo-erp-backend/internal/handlers/router/province"
|
||||||
|
"cargo-erp-backend/internal/middleware"
|
||||||
"cargo-erp-backend/pkg/helpers"
|
"cargo-erp-backend/pkg/helpers"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -65,12 +67,30 @@ func (h *Handlers) ZapLoggerMiddleware(logger *zap.Logger) gin.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Handlers) CORSMiddleware() gin.HandlerFunc {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
|
||||||
|
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE, PATCH")
|
||||||
|
|
||||||
|
if c.Request.Method == "OPTIONS" {
|
||||||
|
c.AbortWithStatus(http.StatusNoContent)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Handlers) Run() {
|
func (h *Handlers) Run() {
|
||||||
host := fmt.Sprintf("%v", h.Helper.Config().Get("app.host"))
|
host := fmt.Sprintf("%v", h.Helper.Config().Get("app.host"))
|
||||||
port := fmt.Sprintf("%v", h.Helper.Config().Get("app.port"))
|
port := fmt.Sprintf("%v", h.Helper.Config().Get("app.port"))
|
||||||
r := gin.Default()
|
r := gin.Default()
|
||||||
r.Use(h.ZapLoggerMiddleware(h.Helper.Log()))
|
r.Use(h.ZapLoggerMiddleware(h.Helper.Log()))
|
||||||
r.Use(gin.Recovery())
|
r.Use(gin.Recovery())
|
||||||
|
r.Use(h.CORSMiddleware())
|
||||||
r.GET("/ping", func(c *gin.Context) {
|
r.GET("/ping", func(c *gin.Context) {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"message": "pong",
|
"message": "pong",
|
||||||
@ -78,6 +98,18 @@ func (h *Handlers) Run() {
|
|||||||
})
|
})
|
||||||
//auth
|
//auth
|
||||||
auth.NewAuthHandler(h.Helper, r).Router()
|
auth.NewAuthHandler(h.Helper, r).Router()
|
||||||
|
|
||||||
|
//master-data
|
||||||
|
masterdata := r.Group("master-data")
|
||||||
|
masterdata.Use(middleware.NewAuthMiddleware(h.Helper).Check())
|
||||||
|
//province
|
||||||
|
{
|
||||||
|
province.NewProvinceHandler(h.Helper, masterdata).Router()
|
||||||
|
|
||||||
|
// regency / city (jika nanti ada)
|
||||||
|
// regency.NewRegencyHandler(h.Helper, masterdata).Router()
|
||||||
|
}
|
||||||
|
|
||||||
h.Helper.Log().Info("Starting Apps")
|
h.Helper.Log().Info("Starting Apps")
|
||||||
r.Run(fmt.Sprintf("%v:%v", host, port))
|
r.Run(fmt.Sprintf("%v:%v", host, port))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,7 +57,9 @@ func (h *AuthHandler) Login(c *gin.Context) {
|
|||||||
true, // httpOnly
|
true, // httpOnly
|
||||||
)
|
)
|
||||||
|
|
||||||
response.Success(c, map[string]interface{}{"token": token})
|
response.Success(c, dto.AuthResponse{
|
||||||
|
Token: token,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
func (h *AuthHandler) Logout(c *gin.Context) {
|
func (h *AuthHandler) Logout(c *gin.Context) {
|
||||||
auth_key := c.MustGet("auth_key")
|
auth_key := c.MustGet("auth_key")
|
||||||
|
|||||||
169
internal/handlers/router/province/province.go
Normal file
169
internal/handlers/router/province/province.go
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
package province
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cargo-erp-backend/internal/handlers/dto"
|
||||||
|
"cargo-erp-backend/internal/usecases"
|
||||||
|
"cargo-erp-backend/pkg/helpers"
|
||||||
|
"cargo-erp-backend/pkg/response"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ProvinceHandlerInterface interface {
|
||||||
|
Router()
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProvinceHandler struct {
|
||||||
|
Helper helpers.HelperInterface
|
||||||
|
Group *gin.RouterGroup
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewProvinceHandler(helper helpers.HelperInterface, g *gin.RouterGroup) ProvinceHandlerInterface {
|
||||||
|
return &ProvinceHandler{Helper: helper, Group: g}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProvinceHandler) Router() {
|
||||||
|
r := h.Group.Group("provinces")
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProvinceHandler) GetAll(c *gin.Context) {
|
||||||
|
userid, err := h.Helper.GetAuthInfo(c.GetString("auth"))
|
||||||
|
if err != nil {
|
||||||
|
response.Error(c, http.StatusUnauthorized, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||||
|
limit, _ := strconv.Atoi(c.DefaultQuery("limit", "10"))
|
||||||
|
|
||||||
|
if page < 1 {
|
||||||
|
page = 1
|
||||||
|
}
|
||||||
|
if limit < 1 {
|
||||||
|
limit = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
u := usecases.NewProvinceUsecase(h.Helper, *userid)
|
||||||
|
provinces, total, err := u.GetAll(page, limit)
|
||||||
|
if err != nil {
|
||||||
|
response.Error(c, http.StatusInternalServerError, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.PaginatedResponse(c, provinces, int(total), page, limit)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProvinceHandler) 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
|
||||||
|
|
||||||
|
// 1. Bind JSON request otomatis ke struct
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
response.Error(c, http.StatusBadRequest, "Request Format request invalid")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
u := usecases.NewProvinceUsecase(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 *ProvinceHandler) 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.NewProvinceUsecase(h.Helper, *userid)
|
||||||
|
province, err := u.GetByID(id)
|
||||||
|
if err != nil {
|
||||||
|
response.Error(c, http.StatusNotFound, "province not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.Success(c, province)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProvinceHandler) Create(c *gin.Context) {
|
||||||
|
var req dto.CreateProvinceRequest
|
||||||
|
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
|
||||||
|
}
|
||||||
|
createdBy := userid.ID
|
||||||
|
|
||||||
|
u := usecases.NewProvinceUsecase(h.Helper, *userid)
|
||||||
|
province, err := u.Create(req.Name, createdBy)
|
||||||
|
if err != nil {
|
||||||
|
response.Error(c, http.StatusInternalServerError, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.Created(c, province)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProvinceHandler) Update(c *gin.Context) {
|
||||||
|
id := c.Param("id")
|
||||||
|
|
||||||
|
var req dto.UpdateProvinceRequest
|
||||||
|
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.NewProvinceUsecase(h.Helper, *userid)
|
||||||
|
province, err := u.Update(id, req.Name, updatedBy)
|
||||||
|
if err != nil {
|
||||||
|
response.Error(c, http.StatusInternalServerError, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.Success(c, province)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *ProvinceHandler) 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.NewProvinceUsecase(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": "province deleted"})
|
||||||
|
}
|
||||||
@ -26,7 +26,7 @@ func NewAuthUsecase(helper helpers.HelperInterface) AuthUsecaseInterface {
|
|||||||
func (u *AuthUsecase) Login(email string, password string) (token string, err error) {
|
func (u *AuthUsecase) Login(email string, password string) (token string, err error) {
|
||||||
var user []domain.User
|
var user []domain.User
|
||||||
db := u.Helper.GetDB("slave")
|
db := u.Helper.GetDB("slave")
|
||||||
db.Model(&user).Where("email=?", email).Find(&user)
|
db.Model(&user).Where("email=?", email).Preload("UsersRole_Relation").Find(&user)
|
||||||
for _, v := range user {
|
for _, v := range user {
|
||||||
pass := u.Helper.StringFromPtr(v.Password)
|
pass := u.Helper.StringFromPtr(v.Password)
|
||||||
if u.Helper.VerifyPassword(pass, password) {
|
if u.Helper.VerifyPassword(pass, password) {
|
||||||
|
|||||||
136
internal/usecases/province.go
Normal file
136
internal/usecases/province.go
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
package usecases
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cargo-erp-backend/internal/domain"
|
||||||
|
"cargo-erp-backend/internal/handlers/dto"
|
||||||
|
"cargo-erp-backend/pkg/datatable"
|
||||||
|
"cargo-erp-backend/pkg/helpers"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ProvinceUsecaseInterface interface {
|
||||||
|
GetAll(page int, limit int) ([]domain.Province, int64, error)
|
||||||
|
GetList(dto.DataTableRequest) (dto.DataTableResponse, error)
|
||||||
|
GetByID(id string) (domain.Province, error)
|
||||||
|
Create(name string, createdBy string) (domain.Province, error)
|
||||||
|
Update(id string, name string, updatedBy string) (domain.Province, error)
|
||||||
|
Delete(id string) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProvinceUsecase struct {
|
||||||
|
Helper helpers.HelperInterface
|
||||||
|
AuthUser domain.User
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewProvinceUsecase(helper helpers.HelperInterface, authUser domain.User) ProvinceUsecaseInterface {
|
||||||
|
return &ProvinceUsecase{Helper: helper, AuthUser: authUser}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *ProvinceUsecase) GetAll(page int, limit int) ([]domain.Province, int64, error) {
|
||||||
|
var provinces []domain.Province
|
||||||
|
var total int64
|
||||||
|
|
||||||
|
db := u.Helper.GetDB("slave")
|
||||||
|
if u.AuthUser.UsersRole_Relation.RoleKey != "SPM" {
|
||||||
|
db.Where(db.Where("merchant_id IS NULL").Or("merchant_id=?", u.AuthUser.MerchantID))
|
||||||
|
}
|
||||||
|
db.Model(&domain.Province{}).Count(&total)
|
||||||
|
|
||||||
|
offset := (page - 1) * limit
|
||||||
|
if err := db.Offset(offset).Limit(limit).Find(&provinces).Error; err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return provinces, total, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *ProvinceUsecase) GetList(req dto.DataTableRequest) (dto.DataTableResponse, error) {
|
||||||
|
// var provinces []domain.Province
|
||||||
|
var response dto.DataTableResponse
|
||||||
|
db := u.Helper.GetDB("slave")
|
||||||
|
tx := db.Table("province").Joins("LEFT JOIN merchant ON province.merchant_id=merchant.id")
|
||||||
|
dt := datatable.NewDatatable(tx, req)
|
||||||
|
coldef := make([]dto.DataTableColDef, 0)
|
||||||
|
coldef = append(coldef, dto.DataTableColDef{
|
||||||
|
Field: "province.name",
|
||||||
|
Alias: "name",
|
||||||
|
Formatter: nil,
|
||||||
|
})
|
||||||
|
coldef = append(coldef, dto.DataTableColDef{
|
||||||
|
Field: "merchant.id",
|
||||||
|
Alias: "merchant_id",
|
||||||
|
Formatter: nil,
|
||||||
|
})
|
||||||
|
|
||||||
|
response = dt.Render(coldef)
|
||||||
|
// var total int64
|
||||||
|
// db := u.Helper.GetDB("slave")
|
||||||
|
|
||||||
|
return response, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *ProvinceUsecase) GetByID(id string) (domain.Province, error) {
|
||||||
|
var province domain.Province
|
||||||
|
|
||||||
|
db := u.Helper.GetDB("slave")
|
||||||
|
|
||||||
|
if err := db.Where("id = ?", id).First(&province).Error; err != nil {
|
||||||
|
return domain.Province{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return province, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *ProvinceUsecase) Create(name string, createdBy string) (domain.Province, error) {
|
||||||
|
now := time.Now()
|
||||||
|
province := domain.Province{
|
||||||
|
Name: &name,
|
||||||
|
CreatedBy: &createdBy,
|
||||||
|
CreatedOn: &now,
|
||||||
|
UpdatedBy: &createdBy,
|
||||||
|
UpdatedOn: &now,
|
||||||
|
}
|
||||||
|
|
||||||
|
db := u.Helper.GetDB("master")
|
||||||
|
|
||||||
|
if err := db.Create(&province).Error; err != nil {
|
||||||
|
return domain.Province{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return province, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *ProvinceUsecase) Update(id string, name string, updatedBy string) (domain.Province, error) {
|
||||||
|
var province domain.Province
|
||||||
|
|
||||||
|
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(&province).Error; err != nil {
|
||||||
|
return domain.Province{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
province.Name = &name
|
||||||
|
province.UpdatedBy = &updatedBy
|
||||||
|
province.UpdatedOn = &now
|
||||||
|
|
||||||
|
if err := db.Save(&province).Error; err != nil {
|
||||||
|
return domain.Province{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return province, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *ProvinceUsecase) 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.Province{}, "id = ?", id).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
63
pkg/datatable/datatable.go
Normal file
63
pkg/datatable/datatable.go
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package datatable
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cargo-erp-backend/internal/handlers/dto"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type DatatableInterface interface {
|
||||||
|
Render(coldef []dto.DataTableColDef) dto.DataTableResponse
|
||||||
|
}
|
||||||
|
type Datatable struct {
|
||||||
|
DB *gorm.DB
|
||||||
|
Req dto.DataTableRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDatatable(db *gorm.DB, table_request dto.DataTableRequest) DatatableInterface {
|
||||||
|
return &Datatable{
|
||||||
|
DB: db,
|
||||||
|
Req: table_request,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (d *Datatable) SetTable(db *gorm.DB) {
|
||||||
|
d.DB = db
|
||||||
|
}
|
||||||
|
func (d *Datatable) Render(coldef []dto.DataTableColDef) dto.DataTableResponse {
|
||||||
|
var totaldata int64 = 0
|
||||||
|
d.DB.Count(&totaldata)
|
||||||
|
//select
|
||||||
|
selectAlias := make([]string, 0)
|
||||||
|
for _, v := range coldef {
|
||||||
|
selectAlias = append(selectAlias, fmt.Sprintf("%v AS %v", v.Field, v.Alias))
|
||||||
|
}
|
||||||
|
d.DB.Select(selectAlias)
|
||||||
|
//global filter
|
||||||
|
if len(d.Req.Search.Value) > 0 {
|
||||||
|
for _, vcol := range d.Req.Columns {
|
||||||
|
if vcol.Searchable {
|
||||||
|
for _, v := range coldef {
|
||||||
|
d.DB.Or(fmt.Sprintf("%v::TEXT ILIKE '%%%v%%'", v.Field, d.Req.Search.Value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var totalFiltered int64 = 0
|
||||||
|
d.DB.Count(&totalFiltered)
|
||||||
|
start := d.Req.Start
|
||||||
|
if start == 0 {
|
||||||
|
start = 1
|
||||||
|
}
|
||||||
|
limit := d.Req.Length
|
||||||
|
d.DB.Limit(limit).Offset(start*limit - limit)
|
||||||
|
output := make([]map[string]interface{}, 0)
|
||||||
|
d.DB.Scan(&output)
|
||||||
|
result := dto.DataTableResponse{
|
||||||
|
Draw: 1,
|
||||||
|
RecordsTotal: totaldata,
|
||||||
|
RecordsFiltered: totalFiltered,
|
||||||
|
Data: output,
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ package helpers
|
|||||||
import (
|
import (
|
||||||
"cargo-erp-backend/internal/config"
|
"cargo-erp-backend/internal/config"
|
||||||
"cargo-erp-backend/internal/database"
|
"cargo-erp-backend/internal/database"
|
||||||
|
"cargo-erp-backend/internal/domain"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
@ -21,6 +22,7 @@ type HelperInterface interface {
|
|||||||
StringFromPtr(ptr *string) string
|
StringFromPtr(ptr *string) string
|
||||||
StructTobyte(data interface{}) ([]byte, error)
|
StructTobyte(data interface{}) ([]byte, error)
|
||||||
CloneStructWithoutField(input interface{}, field string) (map[string]interface{}, error)
|
CloneStructWithoutField(input interface{}, field string) (map[string]interface{}, error)
|
||||||
|
GetAuthInfo(authinfo string) (*domain.User, error)
|
||||||
}
|
}
|
||||||
type Helper struct {
|
type Helper struct {
|
||||||
Conf config.ConfigInterface
|
Conf config.ConfigInterface
|
||||||
@ -90,3 +92,12 @@ func (h *Helper) CloneStructWithoutField(input interface{}, field string) (map[s
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Helper) GetAuthInfo(authinfo string) (*domain.User, error) {
|
||||||
|
|
||||||
|
var auth domain.User
|
||||||
|
if err := json.Unmarshal([]byte(authinfo), &auth); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &auth, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -461,3 +461,120 @@
|
|||||||
{"level":"info","ts":"2026-08-16T17:36:56.644+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
{"level":"info","ts":"2026-08-16T17:36:56.644+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
{"level":"info","ts":"2026-08-16T17:36:57.127+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
{"level":"info","ts":"2026-08-16T17:36:57.127+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
{"level":"info","ts":"2026-08-16T17:36:57.678+0700","caller":"handlers/handlers.go:81","msg":"Starting Apps"}
|
{"level":"info","ts":"2026-08-16T17:36:57.678+0700","caller":"handlers/handlers.go:81","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.206+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.293+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.293+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.370+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.505+0700","caller":"handlers/handlers.go:95","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:30:39.989+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"OPTIONS","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.001828917,"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:153.0) Gecko/20100101 Firefox/153.0"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:33:58.902+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"OPTIONS","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.0015305,"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:153.0) Gecko/20100101 Firefox/153.0"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.077+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.153+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.153+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.228+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.341+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:07.912+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":204,"method":"OPTIONS","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.000066167,"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:153.0) Gecko/20100101 Firefox/153.0"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:25.474+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":204,"method":"OPTIONS","path":"/master-data/provinces/list","query":"search=bandung&page=1&per_page=25&sort_by=name&sort_order=asc","ip":"127.0.0.1","latency":0.002417083,"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:153.0) Gecko/20100101 Firefox/153.0"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:36:38.340+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.004616375,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:40.873+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:40.959+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:40.959+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.035+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.182+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:37:44.536+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.000008625,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.438+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.564+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.565+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.641+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.783+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:39:08.305+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/login","query":"","ip":"127.0.0.1","latency":0.205694166,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:39:15.811+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.000276792,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.486+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.652+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.652+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.730+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:53.044+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:41:58.525+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.000017292,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:12.992+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.073+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.073+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.143+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.593+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.681+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.681+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.758+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.860+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:42:39.472+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/data-master/provinces/list","query":"","ip":"127.0.0.1","latency":0.000014083,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.712+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.796+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.796+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.874+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:08.038+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:43:17.592+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"//master-data/provinces/ist","query":"","ip":"127.0.0.1","latency":0.001090084,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:23.980+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDE1NDgsImlhdCI6MTc4NjkzNzk0OH0.2WxnL-WmDO-oB8DwjETzfKSenV2bcYrOBeR2TfuN-Qc"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:24.022+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T10:43:24.152+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/master-data/provinces/ist","query":"","ip":"127.0.0.1","latency":0.1798295,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.161+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.246+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.246+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.321+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.423+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T12:03:36.865+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":401,"method":"GET","path":"/master-data/provinces/ist","query":"","ip":"127.0.0.1","latency":0.005462291,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:47.967+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/login","query":"","ip":"127.0.0.1","latency":0.28778225,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:52.193+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:52.215+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T12:03:52.269+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"GET","path":"/master-data/provinces/ist","query":"","ip":"127.0.0.1","latency":0.076235834,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:04:57.157+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:04:57.194+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T12:04:57.199+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":400,"method":"GET","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.042882084,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.630+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.716+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.716+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.793+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.921+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.617+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.696+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.696+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.764+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.892+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"warn","ts":"2026-08-17T12:47:54.735+0700","caller":"handlers/handlers.go:64","msg":"Client Error","status":404,"method":"POST","path":"/master-data/provinces/ist","query":"","ip":"127.0.0.1","latency":0.000009458,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:48:01.656+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:48:01.678+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:48:01.721+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.064290333,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:30.789+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:30.916+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:30.916+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:30.999+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.218+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:34.527+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:34.679+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.588+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.665+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.665+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.866+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.972+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:50.217+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:50.241+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:50.278+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.060729292,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.458+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.542+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.542+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.675+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.818+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:54.603+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:54.627+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:54.735+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.132095542,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:37.383+0700","caller":"database/database.go:53","msg":"Connect To Master DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:37.861+0700","caller":"database/database.go:63","msg":"DB Master Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:37.862+0700","caller":"database/database.go:76","msg":"Connect To Slave DB"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:37.946+0700","caller":"database/database.go:86","msg":"DB Connection Done"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:38.067+0700","caller":"handlers/handlers.go:113","msg":"Starting Apps"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:42.942+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:42.963+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:43.053+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.110729292,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:05.752+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:05.777+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:05.864+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.112390334,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:10.988+0700","caller":"middleware/auth.go:62","msg":"session_login : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIxOWZmMTAzMWExMWMwYzAxM2Y2MDA0NGY1NiIsImlzcyI6ImNhcmdvLXBsYXRmb3JtIiwic3ViIjoiMTlmZjEwMzFhMTFjMGMwMTNmNjAwNDRmNTYiLCJleHAiOjE3ODY5NDY2MjcsImlhdCI6MTc4Njk0MzAyN30.w6NKrVkSKqtrnL83oFeMOdzvorSe6cQIiyE7WeMZ8tM"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:11.011+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:29:00.18279Z\",\"districts_relation\":null,\"email\":\"crackers.biscuits@gmail.com\",\"id\":\"19ff1031a11c0c013f60044f56\",\"is_active\":true,\"merchant_id\":null,\"merchant_relation\":null,\"merchants_relation\":null,\"nick_name\":\"Super Admin\",\"postal_codes_relation\":null,\"provinces_relation\":null,\"subdistricts_relation\":null,\"updated_by\":null,\"updated_on\":\"2026-08-11T20:29:00.18279Z\",\"users_role_id\":\"19fe813c54d12bf48f1d7c710e\",\"users_role_relation\":{\"created_by\":null,\"created_on\":\"2026-08-10T02:50:37.639811Z\",\"id\":\"19fe813c54d12bf48f1d7c710e\",\"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\":\"Super Admin\",\"role_key\":\"SPM\",\"updated_by\":null,\"updated_on\":\"2026-08-10T02:50:37.639811Z\",\"userss_relation\":null}}"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:11.056+0700","caller":"handlers/handlers.go:66","msg":"Request Success","status":200,"method":"POST","path":"/master-data/provinces/list","query":"","ip":"127.0.0.1","latency":0.068178375,"user-agent":"Apidog/1.0.0 (https://apidog.com)"}
|
||||||
|
|||||||
@ -3130,3 +3130,114 @@
|
|||||||
{"level":"info","ts":"2026-08-16T17:36:57.409+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
{"level":"info","ts":"2026-08-16T17:36:57.409+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
{"level":"info","ts":"2026-08-16T17:36:57.409+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
{"level":"info","ts":"2026-08-16T17:36:57.409+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
{"level":"info","ts":"2026-08-16T17:36:57.677+0700","caller":"database/redis.go:62","msg":"Connected"}
|
{"level":"info","ts":"2026-08-16T17:36:57.677+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.370+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.370+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.424+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.424+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.424+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:29:30.505+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.228+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.229+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.282+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.282+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.282+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:34:05.340+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.035+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.036+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.098+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.098+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.098+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:37:41.181+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.641+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.641+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.726+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.726+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.726+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:38:53.782+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:39:08.212+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/internal/usecases/auth.go:29","elapsed":0.03048775,"rows":1,"sql":"SELECT * FROM \"users_roles\" WHERE \"users_roles\".\"id\" = '19fe813c54d12bf48f1d7c710e'"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:39:08.213+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/internal/usecases/auth.go:29","elapsed":0.108979542,"rows":1,"sql":"SELECT * FROM \"users\" WHERE email='crackers.biscuits@gmail.com'"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.730+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.731+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.988+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.988+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:52.988+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:41:53.044+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.143+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.143+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.229+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.229+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.229+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:13.293+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.758+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.758+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.810+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.810+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.810+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:42:37.860+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.874+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.874+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.928+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.928+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:07.928+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:08.037+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T10:43:24.148+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/internal/usecases/province.go:79","elapsed":0.097699667,"rows":0,"sql":"SELECT * FROM \"province\" WHERE id = 'ist' ORDER BY \"province\".\"id\" LIMIT 1"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.321+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.322+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.372+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.372+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.372+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:30.422+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:47.835+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/internal/usecases/auth.go:29","elapsed":0.025135584,"rows":1,"sql":"SELECT * FROM \"users_roles\" WHERE \"users_roles\".\"id\" = '19fe813c54d12bf48f1d7c710e'"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:47.836+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/internal/usecases/auth.go:29","elapsed":0.13246675,"rows":1,"sql":"SELECT * FROM \"users\" WHERE email='crackers.biscuits@gmail.com'"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:03:52.269+0700","caller":"logger/database.go:90","msg":"[GORM] query execution","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/internal/usecases/province.go:62","elapsed":0.051776792,"rows":0,"sql":"SELECT * FROM \"province\" WHERE id = 'ist' ORDER BY \"province\".\"id\" LIMIT 1"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.793+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.793+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.846+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.846+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.846+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:42:48.921+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.764+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.765+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.827+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.827+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.827+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:47:49.891+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"error","ts":"2026-08-17T12:48:01.719+0700","caller":"logger/database.go:82","msg":"[GORM] query error","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/pkg/datatable/datatable.go:50","elapsed":0.030638916,"rows":-1,"sql":"SELECT * FROM \"","error":"ERROR: unterminated quoted identifier at or near \"\"\" (SQLSTATE 42601)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.002+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.002+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.163+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.163+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.163+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:31.218+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.866+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.867+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.917+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.917+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.918+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:52:47.971+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"error","ts":"2026-08-17T12:52:50.278+0700","caller":"logger/database.go:82","msg":"[GORM] query error","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/pkg/datatable/datatable.go:29","elapsed":0.033337958,"rows":0,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON perovince.merchant_id=merchant.id","error":"ERROR: missing FROM-clause entry for table \"perovince\" (SQLSTATE 42P01)"}
|
||||||
|
{"level":"error","ts":"2026-08-17T12:52:50.278+0700","caller":"logger/database.go:82","msg":"[GORM] query error","line":"/Users/teguh/Documents/project/cargo/cargo-erp-deploy/app/backend/pkg/datatable/datatable.go:53","elapsed":0.000004042,"rows":0,"sql":"","error":"ERROR: missing FROM-clause entry for table \"perovince\" (SQLSTATE 42P01)"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.675+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.676+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.753+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.753+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.754+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:52.818+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:54.696+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:29","elapsed":0.060158792,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:54.707+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:45","elapsed":0.01037275,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:53:54.734+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:53","elapsed":0.027525958,"rows":10,"sql":"SELECT merchant.id,merchant_id FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id LIMIT 10"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:37.946+0700","caller":"database/redis.go:34","msg":"Parse config master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:37.947+0700","caller":"database/redis.go:49","msg":"Connecting to Redis master"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:38.002+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:38.009+0700","caller":"database/redis.go:34","msg":"Parse config slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:38.009+0700","caller":"database/redis.go:49","msg":"Connecting to Redis slave"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:38.066+0700","caller":"database/redis.go:62","msg":"Connected"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:43.014+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:29","elapsed":0.048680833,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:43.028+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:47","elapsed":0.013685875,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:57:43.053+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:55","elapsed":0.024657333,"rows":10,"sql":"SELECT province.name AS name,merchant.id AS merchant_id FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id LIMIT 10"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:05.807+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:29","elapsed":0.023964792,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:05.837+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:47","elapsed":0.029435417,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id WHERE province.name::TEXT ILIKE '%kalimantan%' OR merchant.id::TEXT ILIKE '%kalimantan%'"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:05.861+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:55","elapsed":0.024195791,"rows":5,"sql":"SELECT province.name AS name,merchant.id AS merchant_id FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id WHERE province.name::TEXT ILIKE '%kalimantan%' OR merchant.id::TEXT ILIKE '%kalimantan%' LIMIT 10"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:11.033+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:29","elapsed":0.020841792,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:11.044+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:47","elapsed":0.009482709,"rows":1,"sql":"SELECT count(*) FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id"}
|
||||||
|
{"level":"info","ts":"2026-08-17T12:58:11.056+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:55","elapsed":0.011322792,"rows":10,"sql":"SELECT province.name AS name,merchant.id AS merchant_id FROM \"province\" LEFT JOIN merchant ON province.merchant_id=merchant.id LIMIT 10"}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user