syntax = "v1"

info (
	title:   "Ads API"
	desc:    "API for ppanel"
	author:  "Tension"
	email:   "tension@ppanel.com"
	version: "0.0.1"
)

type (
	CreateAdsRequest {
		Title       string `json:"title"`
		Type        string `json:"type"`
		Content     string `json:"content"`
		Description string `json:"description"`
		TargetURL   string `json:"target_url"`
		StartTime   int64  `json:"start_time"`
		EndTime     int64  `json:"end_time"`
		Status      int    `json:"status"`
	}
	UpdateAdsRequest {
		Id          int64  `json:"id"`
		Title       string `json:"title"`
		Type        string `json:"type"`
		Content     string `json:"content"`
		Description string `json:"description"`
		TargetURL   string `json:"target_url"`
		StartTime   int64  `json:"start_time"`
		EndTime     int64  `json:"end_time"`
		Status      int    `json:"status"`
	}
	DeleteAdsRequest {
		Id int64 `json:"id"`
	}
	GetAdsListRequest {
		Page   int    `form:"page"`
		Size   int    `form:"size"`
		Status *int   `form:"status,omitempty"`
		Search string `form:"search,omitempty"`
	}
	GetAdsListResponse {
		Total int64 `json:"total"`
		List  []Ads `json:"list"`
	}
	GetAdsDetailRequest {
		Id int64 `form:"id"`
	}
)

import "../types.api"

@server (
	prefix:     v1/admin/ads
	group:      admin/ads
	middleware: AuthMiddleware
)
service ppanel {
	@doc "Create Ads"
	@handler CreateAds
	post / (CreateAdsRequest)

	@doc "Update Ads"
	@handler UpdateAds
	put / (UpdateAdsRequest)

	@doc "Delete Ads"
	@handler DeleteAds
	delete / (DeleteAdsRequest)

	@doc "Get Ads List"
	@handler GetAdsList
	get /list (GetAdsListRequest) returns (GetAdsListResponse)

	@doc "Get Ads Detail"
	@handler GetAdsDetail
	get /detail (GetAdsDetailRequest) returns (Ads)
}

