Documentation
¶
Index ¶
- type AccountEvent
- type AdminDetailDto
- type AdminListDto
- type BookingValidationFailEvent
- type BookingValidationSuccessEvent
- type Boost
- type Business
- type BusinessDetailDto
- type BusinessListDto
- type CreatedEvent
- type Currency
- type DeletedEvent
- type DetailDto
- type DisabledEvent
- type EnabledEvent
- type Entity
- func (e *Entity) GetPrice(date time.Time) float64
- func (e *Entity) IsAvailable(date time.Time) bool
- func (e *Entity) ToAdminDetail() *AdminDetailDto
- func (e *Entity) ToAdminList() *AdminListDto
- func (e *Entity) ToBusinessDetail() *BusinessDetailDto
- func (e *Entity) ToBusinessList() *BusinessListDto
- func (e *Entity) ToDetail() *DetailDto
- func (e *Entity) ToList() *ListDto
- type Errors
- type EventConfig
- type Events
- type Factory
- type Feature
- type FilterEntity
- type FilterFeature
- type FilterPrice
- type FilterValidation
- type I18nDetail
- type Image
- type ListDto
- type ListingPriceValidationDto
- type Locale
- type Location
- type Meta
- type NewConfig
- type Order
- type Price
- type PricePerDay
- type ReOrderEvent
- type Repository
- type RestoreEvent
- type Sort
- type UpdatedEvent
- type Validation
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccountEvent ¶
type AdminDetailDto ¶
type AdminDetailDto struct {
*Entity
}
type AdminListDto ¶
type AdminListDto struct { UUID string `json:"uuid" bson:"_id,omitempty"` Business Business `json:"business" bson:"business"` Images []Image `json:"images" bson:"images"` Meta map[Locale]Meta `json:"meta" bson:"meta"` CategoryUUIDs []string `json:"categoryUUIDs" bson:"categoryUUIDs"` Features []Feature `json:"features" bson:"features"` Prices []Price `json:"prices" bson:"prices"` Location Location `json:"location" bson:"location"` Boosts []Boost `json:"boosts" bson:"boosts"` Validation Validation `json:"validation" bson:"validation"` ExtraPaymentChannels []payment.Channel `json:"extraPaymentChannels" bson:"extra_payment_channels"` Currency Currency `json:"currency" bson:"currency"` Order *int `json:"order" bson:"order"` IsActive bool `json:"isActive" bson:"is_active"` IsDeleted bool `json:"isDeleted" bson:"is_deleted"` IsValid bool `json:"isValid" bson:"is_valid"` CreatedAt time.Time `json:"createdAt" bson:"created_at"` UpdatedAt time.Time `json:"updatedAt" bson:"updated_at"` }
type BookingValidationSuccessEvent ¶
type BookingValidationSuccessEvent struct { BookingUUID string `json:"booking_uuid"` ListingUUID string `json:"listing_uuid"` BusinessUUID string `json:"business_uuid"` BusinessName string `json:"business_name"` Currency Currency `json:"currency"` TotalPrice float64 `json:"total_price"` PricePerDays []PricePerDay `json:"price_per_days"` }
type BusinessDetailDto ¶
type BusinessDetailDto struct { UUID string `json:"uuid" bson:"_id,omitempty"` Images []Image `json:"images" bson:"images" validate:"required,min=1,max=30,dive,required"` Meta map[Locale]Meta `json:"meta" bson:"meta" validate:"required,dive,required"` CategoryUUIDs []string `json:"categoryUUIDs" bson:"categoryUUIDs" validate:"required,min=1,max=30,dive,required"` Features []Feature `json:"features" bson:"features" validate:"required,min=1,max=30,dive,required"` Prices []Price `json:"prices" bson:"prices" validate:"required,min=1,max=100,dive,required"` Location Location `json:"location" bson:"location" validate:"required,dive,required"` Boosts []Boost `json:"boosts" bson:"boosts" validate:"required,min=0,max=30,dive,required"` Validation *Validation `json:"validation" bson:"validation" validate:"required,dive,required"` Currency Currency `json:"currency" bson:"currency" validate:"required,oneof=TRY USD EUR"` ExtraPaymentChannels []payment.Channel `json:"extraPaymentChannels" bson:"extra_payment_channels"` Order *int `json:"order" bson:"order" validate:"required,min=0,max=1000"` IsActive bool `json:"isActive" bson:"is_active"` IsValid bool `json:"isValid" bson:"is_valid"` CreatedAt time.Time `json:"createdAt" bson:"created_at"` UpdatedAt time.Time `json:"updatedAt" bson:"updated_at"` }
type BusinessListDto ¶
type BusinessListDto struct { UUID string `json:"uuid" bson:"_id,omitempty"` Images []Image `json:"images" bson:"images"` Meta map[Locale]Meta `json:"meta" bson:"meta"` Location Location `json:"location" bson:"location"` Boosts []Boost `json:"boosts" bson:"boosts"` Currency Currency `json:"currency" bson:"currency"` ExtraPaymentChannels []payment.Channel `json:"extraPaymentChannels" bson:"extra_payment_channels"` Order *int `json:"order" bson:"order"` IsActive bool `json:"isActive" bson:"is_active"` IsDeleted bool `json:"isDeleted" bson:"is_deleted"` IsValid bool `json:"isValid" bson:"is_valid"` CreatedAt time.Time `json:"createdAt" bson:"created_at"` }
type CreatedEvent ¶
type CreatedEvent struct { Entity *Entity `json:"entity"` Account AccountEvent `json:"account"` BusinessNickName string `json:"business_nick_name"` }
type DeletedEvent ¶
type DetailDto ¶
type DetailDto struct { UUID string `json:"uuid" bson:"_id,omitempty"` Business Business `json:"business" bson:"business"` Images []Image `json:"images" bson:"images"` Meta map[Locale]Meta `json:"meta" bson:"meta"` CategoryUUIDs []string `json:"categoryUUIDs" bson:"categoryUUIDs"` Features []Feature `json:"features" bson:"features"` Prices []Price `json:"prices" bson:"prices"` Location Location `json:"location" bson:"location"` Boosts []Boost `json:"boosts" bson:"boosts"` Currency Currency `json:"currency" bson:"currency"` ExtraPaymentChannels []payment.Channel `json:"extraPaymentChannels" bson:"extra_payment_channels"` Validation Validation `json:"validation" bson:"validation"` CreatedAt time.Time `json:"createdAt" bson:"created_at"` UpdatedAt time.Time `json:"updatedAt" bson:"updated_at"` }
type DisabledEvent ¶
type DisabledEvent struct { UUID string `json:"uuid"` Account AccountEvent `json:"account"` BusinessNickName string `json:"business_nick_name"` }
type EnabledEvent ¶
type EnabledEvent struct { UUID string `json:"uuid"` Account AccountEvent `json:"account"` BusinessNickName string `json:"business_nick_name"` }
type Entity ¶
type Entity struct { UUID string `json:"uuid" bson:"_id,omitempty"` Business Business `json:"business" bson:"business" validate:"required,dive,required"` Images []Image `json:"images" bson:"images" validate:"required,min=1,max=30,dive,required"` Meta map[Locale]Meta `json:"meta" bson:"meta" validate:"required,dive,required"` CategoryUUIDs []string `json:"categoryUUIDs" bson:"categoryUUIDs" validate:"required,min=1,max=30,dive,required"` Features []Feature `json:"features" bson:"features" validate:"required,min=1,max=30,dive,required"` Prices []Price `json:"prices" bson:"prices" validate:"required,min=1,max=100,dive,required"` Location Location `json:"location" bson:"location" validate:"required,dive,required"` Boosts []Boost `json:"boosts" bson:"boosts" validate:"required,min=0,max=30,dive,required"` Validation *Validation `json:"validation" bson:"validation" validate:"required,dive,required"` Currency Currency `json:"currency" bson:"currency" validate:"required,oneof=TRY USD EUR"` ExtraPaymentChannels []payment.Channel `json:"extraPaymentChannels" bson:"extra_payment_channels" validate:"required,min=1,max=30,dive,required,oneof=at_the_door"` Order *int `json:"order" bson:"order" validate:"required,min=0,max=1000"` IsActive bool `json:"isActive" bson:"is_active"` IsDeleted bool `json:"isDeleted" bson:"is_deleted"` IsValid bool `json:"isValid" bson:"is_valid"` CreatedAt time.Time `json:"createdAt" bson:"created_at"` UpdatedAt time.Time `json:"updatedAt" bson:"updated_at"` }
func (*Entity) ToAdminDetail ¶
func (e *Entity) ToAdminDetail() *AdminDetailDto
func (*Entity) ToAdminList ¶
func (e *Entity) ToAdminList() *AdminListDto
func (*Entity) ToBusinessDetail ¶
func (e *Entity) ToBusinessDetail() *BusinessDetailDto
func (*Entity) ToBusinessList ¶
func (e *Entity) ToBusinessList() *BusinessListDto
type Errors ¶
type Errors interface { InvalidType() *i18np.Error InvalidBusiness() *i18np.Error InvalidMeta() *i18np.Error InvalidImages() *i18np.Error InvalidCategories() *i18np.Error MetaMinLength() *i18np.Error ImagesMinLength() *i18np.Error CategoriesMinLength() *i18np.Error InvalidPriceDate() *i18np.Error PriceDateConflict(time.Time, time.Time) *i18np.Error Failed(string) *i18np.Error InvalidUUID() *i18np.Error InvalidPeople() *i18np.Error NotFound() *i18np.Error MinAdult() *i18np.Error ValidateBookingNotAvailable(time.Time) *i18np.Error ValidateBookingAdult(int, int) *i18np.Error ValidateBookingKid(int, int) *i18np.Error ValidateBookingBaby(int, int) *i18np.Error ValidateBookingNotFound() *i18np.Error }
type Events ¶
type Events interface { Created(event CreatedEvent) Updated(event UpdatedEvent) Deleted(event DeletedEvent) Disabled(event DisabledEvent) Enabled(event EnabledEvent) ReOrder(event ReOrderEvent) Restore(event RestoreEvent) BookingValidationSuccess(event BookingValidationSuccessEvent) BookingValidationFail(event BookingValidationFailEvent) }
func NewEvents ¶
func NewEvents(cnf EventConfig) Events
type Factory ¶
type Factory struct {
Errors Errors
}
func NewFactory ¶
func NewFactory() Factory
func (Factory) CreateSlugs ¶
type Feature ¶
type Feature struct { CategoryInputUUID string `json:"categoryInputUUID" bson:"category_input_uuid" validate:"required,uuid"` Value interface{} `json:"value" bson:"value" validate:"required"` IsPayed *bool `json:"isPayed" bson:"is_payed" validate:"required"` Price float64 `json:"price" bson:"price" validate:"omitempty,gt=0"` }
type FilterEntity ¶
type FilterEntity struct { Locale string `json:"-"` Query string `json:"query,omitempty" validate:"omitempty,max=100"` Price *FilterPrice `json:"price,omitempty" validate:"omitempty"` Currency Currency `json:"currency,omitempty" validate:"omitempty,oneof=TRY USD EUR"` Validation *FilterValidation `json:"validation,omitempty" validate:"omitempty"` Coordinates []float64 `json:"coordinates,omitempty" validate:"omitempty,min=2,max=2"` Distance *float64 `json:"distance,omitempty" validate:"omitempty,gt=6,lt=19"` Features []*FilterFeature `json:"features,omitempty" validate:"omitempty,dive"` Categories []string `json:"categories,omitempty" validate:"omitempty,dive,object_id"` ExtraPaymentChannels []string `json:"pays,omitempty" validate:"omitempty,dive,oneof=at_the_door"` Sort Sort `json:"sort,omitempty" validate:"omitempty,oneof=most_recent nearest price"` Order Order `json:"order,omitempty" validate:"omitempty,oneof=asc desc"` StartDate *time.Time `json:"-"` EndDate *time.Time `json:"-"` StartDateStr string `json:"start_date" validate:"omitempty,datetime=2006-01-02"` EndDateStr string `json:"end_date" validate:"omitempty,datetime=2006-01-02"` }
func (*FilterEntity) GetPerfectDistance ¶
func (e *FilterEntity) GetPerfectDistance() float64
func (*FilterEntity) Parse ¶
func (e *FilterEntity) Parse()
type FilterFeature ¶
type FilterFeature struct { CategoryInputUUID string `json:"categoryInputUUID" validate:"required,object_id"` Value interface{} `json:"value" validate:"required"` }
type FilterPrice ¶
type FilterValidation ¶
type FilterValidation struct { Adult *int `json:"adult" validate:"omitempty,gt=0"` Kid *int `json:"kid" validate:"omitempty,gt=0"` Baby *int `json:"baby" validate:"omitempty,gt=0"` Family *bool `json:"family" validate:"omitempty"` Pet *bool `json:"pet" validate:"omitempty"` Smoke *bool `json:"smoke" validate:"omitempty"` Alcohol *bool `json:"alcohol" validate:"omitempty"` Party *bool `json:"party" validate:"omitempty"` Unmarried *bool `json:"unmarried" validate:"omitempty"` Guest *bool `json:"guest" validate:"omitempty"` }
type I18nDetail ¶
type ListDto ¶
type ListDto struct { UUID string `json:"uuid" bson:"_id,omitempty"` Business Business `json:"business" bson:"business"` Images []Image `json:"images" bson:"images"` Meta map[Locale]Meta `json:"meta" bson:"meta"` Prices []Price `json:"prices" bson:"prices"` Currency Currency `json:"currency" bson:"currency"` Location Location `json:"location" bson:"location"` ExtraPaymentChannels []payment.Channel `json:"extraPaymentChannels" bson:"extra_payment_channels"` }
type ListingPriceValidationDto ¶
type ListingPriceValidationDto struct { Price float64 `json:"price" validate:"required,gt=0"` StartDate string `json:"startDate" validate:"required,datetime=2006-01-02"` EndDate string `json:"endDate" validate:"required,datetime=2006-01-02"` }
func (*ListingPriceValidationDto) ToEntity ¶
func (d *ListingPriceValidationDto) ToEntity() Price
type Location ¶
type Location struct { Country string `json:"country" validate:"required,max=255,min=3"` City string `json:"city" validate:"required,max=255,min=3"` Street string `json:"street" validate:"required,max=255,min=3"` Address string `json:"address" validate:"required,max=255,min=3"` IsStrict *bool `json:"isStrict" bson:"is_strict" validate:"required"` Coordinates []float64 `json:"coordinates" bson:"coordinates" validate:"required,min=2,max=2,dive,required,min=-180,max=180"` }
type PricePerDay ¶
type ReOrderEvent ¶
type ReOrderEvent struct { UUID string `json:"uuid"` Account AccountEvent `json:"account"` NewOrder int `json:"new_order"` BusinessNickName string `json:"business_nick_name"` }
type Repository ¶
type Repository interface { Create(ctx context.Context, entity *Entity) (*Entity, *i18np.Error) Update(ctx context.Context, entity *Entity) *i18np.Error Delete(ctx context.Context, listingUUID string) *i18np.Error Restore(ctx context.Context, listingUUID string) *i18np.Error Disable(ctx context.Context, listingUUID string) *i18np.Error Enable(ctx context.Context, listingUUID string) *i18np.Error MarkValid(ctx context.Context, listingUUID string) *i18np.Error MarkInvalid(ctx context.Context, listingUUID string) *i18np.Error ReOrder(ctx context.Context, listingUUID string, order int) *i18np.Error View(ctx context.Context, detail I18nDetail) (*Entity, *i18np.Error) GetByUUID(ctx context.Context, listingUUID string) (*Entity, bool, *i18np.Error) AdminView(ctx context.Context, listingUUID string) (*Entity, *i18np.Error) BusinessView(ctx context.Context, listingUUID string) (*Entity, *i18np.Error) Filter(ctx context.Context, filter FilterEntity, listConfig list.Config) (*list.Result[*Entity], *i18np.Error) FilterByBusiness(ctx context.Context, businessNickName string, filter FilterEntity, listConfig list.Config) (*list.Result[*Entity], *i18np.Error) AdminFilter(ctx context.Context, filter FilterEntity, listConfig list.Config) (*list.Result[*Entity], *i18np.Error) ListMy(ctx context.Context, businessUUID string, listConfig list.Config) (*list.Result[*Entity], *i18np.Error) }
func NewRepo ¶
func NewRepo(collection *mongo.Collection, factory Factory) Repository
type RestoreEvent ¶
type UpdatedEvent ¶
type UpdatedEvent struct { Old *Entity `json:"old"` Entity *Entity `json:"entity"` Account AccountEvent `json:"account"` BusinessNickName string `json:"business_nick_name"` }
type Validation ¶
type Validation struct { MinAdult *int `json:"minAdult" bson:"min_adult" validate:"required,min=1,max=50,ltefield=MaxAdult"` MaxAdult *int `json:"maxAdult" bson:"max_adult" validate:"required,min=0,max=50,gtefield=MinAdult"` MinKid *int `json:"minKid" bson:"min_kid" validate:"required,min=0,max=50,ltefield=MaxKid"` MaxKid *int `json:"maxKid" bson:"max_kid" validate:"required,min=0,max=50,gtefield=MinKid"` MinBaby *int `json:"minBaby" bson:"min_baby" validate:"required,min=0,max=50,ltefield=MaxBaby"` MaxBaby *int `json:"maxBaby" bson:"max_baby" validate:"required,min=0,max=50,gtefield=MinBaby"` MinDate *int `json:"minDate" bson:"min_date" validate:"required,min=0,max=50,ltefield=MaxDate"` MaxDate *int `json:"maxDate" bson:"max_date" validate:"required,min=0,max=50,gtefield=MinDate"` OnlyFamily *bool `json:"onlyFamily" bson:"only_family" validate:"required"` NoPet *bool `json:"noPet" bson:"no_pet" validate:"required"` NoSmoke *bool `json:"noSmoke" bson:"no_smoke" validate:"required"` NoAlcohol *bool `json:"noAlcohol" bson:"no_alcohol" validate:"required"` NoParty *bool `json:"noParty" bson:"no_party" validate:"required"` NoUnmarried *bool `json:"noUnmarried" bson:"no_unmarried" validate:"required"` NoGuest *bool `json:"noGuest" bson:"no_guest" validate:"required"` }
Click to show internal directories.
Click to hide internal directories.