usagelog.go 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789
  1. // Code generated by ent, DO NOT EDIT.
  2. package ent
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "strings"
  7. "time"
  8. "entgo.io/ent"
  9. "entgo.io/ent/dialect/sql"
  10. "github.com/Wei-Shaw/sub2api/ent/account"
  11. "github.com/Wei-Shaw/sub2api/ent/apikey"
  12. "github.com/Wei-Shaw/sub2api/ent/group"
  13. "github.com/Wei-Shaw/sub2api/ent/usagelog"
  14. "github.com/Wei-Shaw/sub2api/ent/user"
  15. "github.com/Wei-Shaw/sub2api/ent/usersubscription"
  16. )
  17. // UsageLog is the model entity for the UsageLog schema.
  18. type UsageLog struct {
  19. config `json:"-"`
  20. // ID of the ent.
  21. ID int64 `json:"id,omitempty"`
  22. // UserID holds the value of the "user_id" field.
  23. UserID int64 `json:"user_id,omitempty"`
  24. // APIKeyID holds the value of the "api_key_id" field.
  25. APIKeyID int64 `json:"api_key_id,omitempty"`
  26. // AccountID holds the value of the "account_id" field.
  27. AccountID int64 `json:"account_id,omitempty"`
  28. // RequestID holds the value of the "request_id" field.
  29. RequestID string `json:"request_id,omitempty"`
  30. // Model holds the value of the "model" field.
  31. Model string `json:"model,omitempty"`
  32. // RequestedModel holds the value of the "requested_model" field.
  33. RequestedModel *string `json:"requested_model,omitempty"`
  34. // UpstreamModel holds the value of the "upstream_model" field.
  35. UpstreamModel *string `json:"upstream_model,omitempty"`
  36. // UpstreamResponseModel holds the value of the "upstream_response_model" field.
  37. UpstreamResponseModel *string `json:"upstream_response_model,omitempty"`
  38. // UpstreamModelMismatch holds the value of the "upstream_model_mismatch" field.
  39. UpstreamModelMismatch *bool `json:"upstream_model_mismatch,omitempty"`
  40. // 渠道 ID
  41. ChannelID *int64 `json:"channel_id,omitempty"`
  42. // 模型映射链
  43. ModelMappingChain *string `json:"model_mapping_chain,omitempty"`
  44. // 计费层级标签
  45. BillingTier *string `json:"billing_tier,omitempty"`
  46. // 计费模式:token/per_request/image
  47. BillingMode *string `json:"billing_mode,omitempty"`
  48. // GroupID holds the value of the "group_id" field.
  49. GroupID *int64 `json:"group_id,omitempty"`
  50. // SubscriptionID holds the value of the "subscription_id" field.
  51. SubscriptionID *int64 `json:"subscription_id,omitempty"`
  52. // InputTokens holds the value of the "input_tokens" field.
  53. InputTokens int `json:"input_tokens,omitempty"`
  54. // OutputTokens holds the value of the "output_tokens" field.
  55. OutputTokens int `json:"output_tokens,omitempty"`
  56. // CacheCreationTokens holds the value of the "cache_creation_tokens" field.
  57. CacheCreationTokens int `json:"cache_creation_tokens,omitempty"`
  58. // CacheReadTokens holds the value of the "cache_read_tokens" field.
  59. CacheReadTokens int `json:"cache_read_tokens,omitempty"`
  60. // CacheCreation5mTokens holds the value of the "cache_creation_5m_tokens" field.
  61. CacheCreation5mTokens int `json:"cache_creation_5m_tokens,omitempty"`
  62. // CacheCreation1hTokens holds the value of the "cache_creation_1h_tokens" field.
  63. CacheCreation1hTokens int `json:"cache_creation_1h_tokens,omitempty"`
  64. // InputCost holds the value of the "input_cost" field.
  65. InputCost float64 `json:"input_cost,omitempty"`
  66. // OutputCost holds the value of the "output_cost" field.
  67. OutputCost float64 `json:"output_cost,omitempty"`
  68. // CacheCreationCost holds the value of the "cache_creation_cost" field.
  69. CacheCreationCost float64 `json:"cache_creation_cost,omitempty"`
  70. // CacheReadCost holds the value of the "cache_read_cost" field.
  71. CacheReadCost float64 `json:"cache_read_cost,omitempty"`
  72. // TotalCost holds the value of the "total_cost" field.
  73. TotalCost float64 `json:"total_cost,omitempty"`
  74. // ActualCost holds the value of the "actual_cost" field.
  75. ActualCost float64 `json:"actual_cost,omitempty"`
  76. // RateMultiplier holds the value of the "rate_multiplier" field.
  77. RateMultiplier float64 `json:"rate_multiplier,omitempty"`
  78. // Whether long-context pricing changed token prices for this request
  79. LongContextBillingApplied bool `json:"long_context_billing_applied,omitempty"`
  80. // AccountRateMultiplier holds the value of the "account_rate_multiplier" field.
  81. AccountRateMultiplier *float64 `json:"account_rate_multiplier,omitempty"`
  82. // BillingType holds the value of the "billing_type" field.
  83. BillingType int8 `json:"billing_type,omitempty"`
  84. // Stream holds the value of the "stream" field.
  85. Stream bool `json:"stream,omitempty"`
  86. // DurationMs holds the value of the "duration_ms" field.
  87. DurationMs *int `json:"duration_ms,omitempty"`
  88. // FirstTokenMs holds the value of the "first_token_ms" field.
  89. FirstTokenMs *int `json:"first_token_ms,omitempty"`
  90. // UserAgent holds the value of the "user_agent" field.
  91. UserAgent *string `json:"user_agent,omitempty"`
  92. // IPAddress holds the value of the "ip_address" field.
  93. IPAddress *string `json:"ip_address,omitempty"`
  94. // ImageCount holds the value of the "image_count" field.
  95. ImageCount int `json:"image_count,omitempty"`
  96. // ImageSize holds the value of the "image_size" field.
  97. ImageSize *string `json:"image_size,omitempty"`
  98. // ImageInputSize holds the value of the "image_input_size" field.
  99. ImageInputSize *string `json:"image_input_size,omitempty"`
  100. // ImageOutputSize holds the value of the "image_output_size" field.
  101. ImageOutputSize *string `json:"image_output_size,omitempty"`
  102. // ImageSizeSource holds the value of the "image_size_source" field.
  103. ImageSizeSource *string `json:"image_size_source,omitempty"`
  104. // ImageSizeBreakdown holds the value of the "image_size_breakdown" field.
  105. ImageSizeBreakdown map[string]int `json:"image_size_breakdown,omitempty"`
  106. // 视频生成数量;>0 表示本行是视频生成用量
  107. VideoCount int `json:"video_count,omitempty"`
  108. // 计费用视频分辨率 480p/720p/1080p
  109. VideoResolution *string `json:"video_resolution,omitempty"`
  110. // 提交时请求的视频时长(秒),按秒计费的乘数
  111. VideoDurationSeconds *int `json:"video_duration_seconds,omitempty"`
  112. // CacheTTLOverridden holds the value of the "cache_ttl_overridden" field.
  113. CacheTTLOverridden bool `json:"cache_ttl_overridden,omitempty"`
  114. // CreatedAt holds the value of the "created_at" field.
  115. CreatedAt time.Time `json:"created_at,omitempty"`
  116. // Edges holds the relations/edges for other nodes in the graph.
  117. // The values are being populated by the UsageLogQuery when eager-loading is set.
  118. Edges UsageLogEdges `json:"edges"`
  119. selectValues sql.SelectValues
  120. }
  121. // UsageLogEdges holds the relations/edges for other nodes in the graph.
  122. type UsageLogEdges struct {
  123. // User holds the value of the user edge.
  124. User *User `json:"user,omitempty"`
  125. // APIKey holds the value of the api_key edge.
  126. APIKey *APIKey `json:"api_key,omitempty"`
  127. // Account holds the value of the account edge.
  128. Account *Account `json:"account,omitempty"`
  129. // Group holds the value of the group edge.
  130. Group *Group `json:"group,omitempty"`
  131. // Subscription holds the value of the subscription edge.
  132. Subscription *UserSubscription `json:"subscription,omitempty"`
  133. // loadedTypes holds the information for reporting if a
  134. // type was loaded (or requested) in eager-loading or not.
  135. loadedTypes [5]bool
  136. }
  137. // UserOrErr returns the User value or an error if the edge
  138. // was not loaded in eager-loading, or loaded but was not found.
  139. func (e UsageLogEdges) UserOrErr() (*User, error) {
  140. if e.User != nil {
  141. return e.User, nil
  142. } else if e.loadedTypes[0] {
  143. return nil, &NotFoundError{label: user.Label}
  144. }
  145. return nil, &NotLoadedError{edge: "user"}
  146. }
  147. // APIKeyOrErr returns the APIKey value or an error if the edge
  148. // was not loaded in eager-loading, or loaded but was not found.
  149. func (e UsageLogEdges) APIKeyOrErr() (*APIKey, error) {
  150. if e.APIKey != nil {
  151. return e.APIKey, nil
  152. } else if e.loadedTypes[1] {
  153. return nil, &NotFoundError{label: apikey.Label}
  154. }
  155. return nil, &NotLoadedError{edge: "api_key"}
  156. }
  157. // AccountOrErr returns the Account value or an error if the edge
  158. // was not loaded in eager-loading, or loaded but was not found.
  159. func (e UsageLogEdges) AccountOrErr() (*Account, error) {
  160. if e.Account != nil {
  161. return e.Account, nil
  162. } else if e.loadedTypes[2] {
  163. return nil, &NotFoundError{label: account.Label}
  164. }
  165. return nil, &NotLoadedError{edge: "account"}
  166. }
  167. // GroupOrErr returns the Group value or an error if the edge
  168. // was not loaded in eager-loading, or loaded but was not found.
  169. func (e UsageLogEdges) GroupOrErr() (*Group, error) {
  170. if e.Group != nil {
  171. return e.Group, nil
  172. } else if e.loadedTypes[3] {
  173. return nil, &NotFoundError{label: group.Label}
  174. }
  175. return nil, &NotLoadedError{edge: "group"}
  176. }
  177. // SubscriptionOrErr returns the Subscription value or an error if the edge
  178. // was not loaded in eager-loading, or loaded but was not found.
  179. func (e UsageLogEdges) SubscriptionOrErr() (*UserSubscription, error) {
  180. if e.Subscription != nil {
  181. return e.Subscription, nil
  182. } else if e.loadedTypes[4] {
  183. return nil, &NotFoundError{label: usersubscription.Label}
  184. }
  185. return nil, &NotLoadedError{edge: "subscription"}
  186. }
  187. // scanValues returns the types for scanning values from sql.Rows.
  188. func (*UsageLog) scanValues(columns []string) ([]any, error) {
  189. values := make([]any, len(columns))
  190. for i := range columns {
  191. switch columns[i] {
  192. case usagelog.FieldImageSizeBreakdown:
  193. values[i] = new([]byte)
  194. case usagelog.FieldUpstreamModelMismatch, usagelog.FieldLongContextBillingApplied, usagelog.FieldStream, usagelog.FieldCacheTTLOverridden:
  195. values[i] = new(sql.NullBool)
  196. case usagelog.FieldInputCost, usagelog.FieldOutputCost, usagelog.FieldCacheCreationCost, usagelog.FieldCacheReadCost, usagelog.FieldTotalCost, usagelog.FieldActualCost, usagelog.FieldRateMultiplier, usagelog.FieldAccountRateMultiplier:
  197. values[i] = new(sql.NullFloat64)
  198. case usagelog.FieldID, usagelog.FieldUserID, usagelog.FieldAPIKeyID, usagelog.FieldAccountID, usagelog.FieldChannelID, usagelog.FieldGroupID, usagelog.FieldSubscriptionID, usagelog.FieldInputTokens, usagelog.FieldOutputTokens, usagelog.FieldCacheCreationTokens, usagelog.FieldCacheReadTokens, usagelog.FieldCacheCreation5mTokens, usagelog.FieldCacheCreation1hTokens, usagelog.FieldBillingType, usagelog.FieldDurationMs, usagelog.FieldFirstTokenMs, usagelog.FieldImageCount, usagelog.FieldVideoCount, usagelog.FieldVideoDurationSeconds:
  199. values[i] = new(sql.NullInt64)
  200. case usagelog.FieldRequestID, usagelog.FieldModel, usagelog.FieldRequestedModel, usagelog.FieldUpstreamModel, usagelog.FieldUpstreamResponseModel, usagelog.FieldModelMappingChain, usagelog.FieldBillingTier, usagelog.FieldBillingMode, usagelog.FieldUserAgent, usagelog.FieldIPAddress, usagelog.FieldImageSize, usagelog.FieldImageInputSize, usagelog.FieldImageOutputSize, usagelog.FieldImageSizeSource, usagelog.FieldVideoResolution:
  201. values[i] = new(sql.NullString)
  202. case usagelog.FieldCreatedAt:
  203. values[i] = new(sql.NullTime)
  204. default:
  205. values[i] = new(sql.UnknownType)
  206. }
  207. }
  208. return values, nil
  209. }
  210. // assignValues assigns the values that were returned from sql.Rows (after scanning)
  211. // to the UsageLog fields.
  212. func (_m *UsageLog) assignValues(columns []string, values []any) error {
  213. if m, n := len(values), len(columns); m < n {
  214. return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
  215. }
  216. for i := range columns {
  217. switch columns[i] {
  218. case usagelog.FieldID:
  219. value, ok := values[i].(*sql.NullInt64)
  220. if !ok {
  221. return fmt.Errorf("unexpected type %T for field id", value)
  222. }
  223. _m.ID = int64(value.Int64)
  224. case usagelog.FieldUserID:
  225. if value, ok := values[i].(*sql.NullInt64); !ok {
  226. return fmt.Errorf("unexpected type %T for field user_id", values[i])
  227. } else if value.Valid {
  228. _m.UserID = value.Int64
  229. }
  230. case usagelog.FieldAPIKeyID:
  231. if value, ok := values[i].(*sql.NullInt64); !ok {
  232. return fmt.Errorf("unexpected type %T for field api_key_id", values[i])
  233. } else if value.Valid {
  234. _m.APIKeyID = value.Int64
  235. }
  236. case usagelog.FieldAccountID:
  237. if value, ok := values[i].(*sql.NullInt64); !ok {
  238. return fmt.Errorf("unexpected type %T for field account_id", values[i])
  239. } else if value.Valid {
  240. _m.AccountID = value.Int64
  241. }
  242. case usagelog.FieldRequestID:
  243. if value, ok := values[i].(*sql.NullString); !ok {
  244. return fmt.Errorf("unexpected type %T for field request_id", values[i])
  245. } else if value.Valid {
  246. _m.RequestID = value.String
  247. }
  248. case usagelog.FieldModel:
  249. if value, ok := values[i].(*sql.NullString); !ok {
  250. return fmt.Errorf("unexpected type %T for field model", values[i])
  251. } else if value.Valid {
  252. _m.Model = value.String
  253. }
  254. case usagelog.FieldRequestedModel:
  255. if value, ok := values[i].(*sql.NullString); !ok {
  256. return fmt.Errorf("unexpected type %T for field requested_model", values[i])
  257. } else if value.Valid {
  258. _m.RequestedModel = new(string)
  259. *_m.RequestedModel = value.String
  260. }
  261. case usagelog.FieldUpstreamModel:
  262. if value, ok := values[i].(*sql.NullString); !ok {
  263. return fmt.Errorf("unexpected type %T for field upstream_model", values[i])
  264. } else if value.Valid {
  265. _m.UpstreamModel = new(string)
  266. *_m.UpstreamModel = value.String
  267. }
  268. case usagelog.FieldUpstreamResponseModel:
  269. if value, ok := values[i].(*sql.NullString); !ok {
  270. return fmt.Errorf("unexpected type %T for field upstream_response_model", values[i])
  271. } else if value.Valid {
  272. _m.UpstreamResponseModel = new(string)
  273. *_m.UpstreamResponseModel = value.String
  274. }
  275. case usagelog.FieldUpstreamModelMismatch:
  276. if value, ok := values[i].(*sql.NullBool); !ok {
  277. return fmt.Errorf("unexpected type %T for field upstream_model_mismatch", values[i])
  278. } else if value.Valid {
  279. _m.UpstreamModelMismatch = new(bool)
  280. *_m.UpstreamModelMismatch = value.Bool
  281. }
  282. case usagelog.FieldChannelID:
  283. if value, ok := values[i].(*sql.NullInt64); !ok {
  284. return fmt.Errorf("unexpected type %T for field channel_id", values[i])
  285. } else if value.Valid {
  286. _m.ChannelID = new(int64)
  287. *_m.ChannelID = value.Int64
  288. }
  289. case usagelog.FieldModelMappingChain:
  290. if value, ok := values[i].(*sql.NullString); !ok {
  291. return fmt.Errorf("unexpected type %T for field model_mapping_chain", values[i])
  292. } else if value.Valid {
  293. _m.ModelMappingChain = new(string)
  294. *_m.ModelMappingChain = value.String
  295. }
  296. case usagelog.FieldBillingTier:
  297. if value, ok := values[i].(*sql.NullString); !ok {
  298. return fmt.Errorf("unexpected type %T for field billing_tier", values[i])
  299. } else if value.Valid {
  300. _m.BillingTier = new(string)
  301. *_m.BillingTier = value.String
  302. }
  303. case usagelog.FieldBillingMode:
  304. if value, ok := values[i].(*sql.NullString); !ok {
  305. return fmt.Errorf("unexpected type %T for field billing_mode", values[i])
  306. } else if value.Valid {
  307. _m.BillingMode = new(string)
  308. *_m.BillingMode = value.String
  309. }
  310. case usagelog.FieldGroupID:
  311. if value, ok := values[i].(*sql.NullInt64); !ok {
  312. return fmt.Errorf("unexpected type %T for field group_id", values[i])
  313. } else if value.Valid {
  314. _m.GroupID = new(int64)
  315. *_m.GroupID = value.Int64
  316. }
  317. case usagelog.FieldSubscriptionID:
  318. if value, ok := values[i].(*sql.NullInt64); !ok {
  319. return fmt.Errorf("unexpected type %T for field subscription_id", values[i])
  320. } else if value.Valid {
  321. _m.SubscriptionID = new(int64)
  322. *_m.SubscriptionID = value.Int64
  323. }
  324. case usagelog.FieldInputTokens:
  325. if value, ok := values[i].(*sql.NullInt64); !ok {
  326. return fmt.Errorf("unexpected type %T for field input_tokens", values[i])
  327. } else if value.Valid {
  328. _m.InputTokens = int(value.Int64)
  329. }
  330. case usagelog.FieldOutputTokens:
  331. if value, ok := values[i].(*sql.NullInt64); !ok {
  332. return fmt.Errorf("unexpected type %T for field output_tokens", values[i])
  333. } else if value.Valid {
  334. _m.OutputTokens = int(value.Int64)
  335. }
  336. case usagelog.FieldCacheCreationTokens:
  337. if value, ok := values[i].(*sql.NullInt64); !ok {
  338. return fmt.Errorf("unexpected type %T for field cache_creation_tokens", values[i])
  339. } else if value.Valid {
  340. _m.CacheCreationTokens = int(value.Int64)
  341. }
  342. case usagelog.FieldCacheReadTokens:
  343. if value, ok := values[i].(*sql.NullInt64); !ok {
  344. return fmt.Errorf("unexpected type %T for field cache_read_tokens", values[i])
  345. } else if value.Valid {
  346. _m.CacheReadTokens = int(value.Int64)
  347. }
  348. case usagelog.FieldCacheCreation5mTokens:
  349. if value, ok := values[i].(*sql.NullInt64); !ok {
  350. return fmt.Errorf("unexpected type %T for field cache_creation_5m_tokens", values[i])
  351. } else if value.Valid {
  352. _m.CacheCreation5mTokens = int(value.Int64)
  353. }
  354. case usagelog.FieldCacheCreation1hTokens:
  355. if value, ok := values[i].(*sql.NullInt64); !ok {
  356. return fmt.Errorf("unexpected type %T for field cache_creation_1h_tokens", values[i])
  357. } else if value.Valid {
  358. _m.CacheCreation1hTokens = int(value.Int64)
  359. }
  360. case usagelog.FieldInputCost:
  361. if value, ok := values[i].(*sql.NullFloat64); !ok {
  362. return fmt.Errorf("unexpected type %T for field input_cost", values[i])
  363. } else if value.Valid {
  364. _m.InputCost = value.Float64
  365. }
  366. case usagelog.FieldOutputCost:
  367. if value, ok := values[i].(*sql.NullFloat64); !ok {
  368. return fmt.Errorf("unexpected type %T for field output_cost", values[i])
  369. } else if value.Valid {
  370. _m.OutputCost = value.Float64
  371. }
  372. case usagelog.FieldCacheCreationCost:
  373. if value, ok := values[i].(*sql.NullFloat64); !ok {
  374. return fmt.Errorf("unexpected type %T for field cache_creation_cost", values[i])
  375. } else if value.Valid {
  376. _m.CacheCreationCost = value.Float64
  377. }
  378. case usagelog.FieldCacheReadCost:
  379. if value, ok := values[i].(*sql.NullFloat64); !ok {
  380. return fmt.Errorf("unexpected type %T for field cache_read_cost", values[i])
  381. } else if value.Valid {
  382. _m.CacheReadCost = value.Float64
  383. }
  384. case usagelog.FieldTotalCost:
  385. if value, ok := values[i].(*sql.NullFloat64); !ok {
  386. return fmt.Errorf("unexpected type %T for field total_cost", values[i])
  387. } else if value.Valid {
  388. _m.TotalCost = value.Float64
  389. }
  390. case usagelog.FieldActualCost:
  391. if value, ok := values[i].(*sql.NullFloat64); !ok {
  392. return fmt.Errorf("unexpected type %T for field actual_cost", values[i])
  393. } else if value.Valid {
  394. _m.ActualCost = value.Float64
  395. }
  396. case usagelog.FieldRateMultiplier:
  397. if value, ok := values[i].(*sql.NullFloat64); !ok {
  398. return fmt.Errorf("unexpected type %T for field rate_multiplier", values[i])
  399. } else if value.Valid {
  400. _m.RateMultiplier = value.Float64
  401. }
  402. case usagelog.FieldLongContextBillingApplied:
  403. if value, ok := values[i].(*sql.NullBool); !ok {
  404. return fmt.Errorf("unexpected type %T for field long_context_billing_applied", values[i])
  405. } else if value.Valid {
  406. _m.LongContextBillingApplied = value.Bool
  407. }
  408. case usagelog.FieldAccountRateMultiplier:
  409. if value, ok := values[i].(*sql.NullFloat64); !ok {
  410. return fmt.Errorf("unexpected type %T for field account_rate_multiplier", values[i])
  411. } else if value.Valid {
  412. _m.AccountRateMultiplier = new(float64)
  413. *_m.AccountRateMultiplier = value.Float64
  414. }
  415. case usagelog.FieldBillingType:
  416. if value, ok := values[i].(*sql.NullInt64); !ok {
  417. return fmt.Errorf("unexpected type %T for field billing_type", values[i])
  418. } else if value.Valid {
  419. _m.BillingType = int8(value.Int64)
  420. }
  421. case usagelog.FieldStream:
  422. if value, ok := values[i].(*sql.NullBool); !ok {
  423. return fmt.Errorf("unexpected type %T for field stream", values[i])
  424. } else if value.Valid {
  425. _m.Stream = value.Bool
  426. }
  427. case usagelog.FieldDurationMs:
  428. if value, ok := values[i].(*sql.NullInt64); !ok {
  429. return fmt.Errorf("unexpected type %T for field duration_ms", values[i])
  430. } else if value.Valid {
  431. _m.DurationMs = new(int)
  432. *_m.DurationMs = int(value.Int64)
  433. }
  434. case usagelog.FieldFirstTokenMs:
  435. if value, ok := values[i].(*sql.NullInt64); !ok {
  436. return fmt.Errorf("unexpected type %T for field first_token_ms", values[i])
  437. } else if value.Valid {
  438. _m.FirstTokenMs = new(int)
  439. *_m.FirstTokenMs = int(value.Int64)
  440. }
  441. case usagelog.FieldUserAgent:
  442. if value, ok := values[i].(*sql.NullString); !ok {
  443. return fmt.Errorf("unexpected type %T for field user_agent", values[i])
  444. } else if value.Valid {
  445. _m.UserAgent = new(string)
  446. *_m.UserAgent = value.String
  447. }
  448. case usagelog.FieldIPAddress:
  449. if value, ok := values[i].(*sql.NullString); !ok {
  450. return fmt.Errorf("unexpected type %T for field ip_address", values[i])
  451. } else if value.Valid {
  452. _m.IPAddress = new(string)
  453. *_m.IPAddress = value.String
  454. }
  455. case usagelog.FieldImageCount:
  456. if value, ok := values[i].(*sql.NullInt64); !ok {
  457. return fmt.Errorf("unexpected type %T for field image_count", values[i])
  458. } else if value.Valid {
  459. _m.ImageCount = int(value.Int64)
  460. }
  461. case usagelog.FieldImageSize:
  462. if value, ok := values[i].(*sql.NullString); !ok {
  463. return fmt.Errorf("unexpected type %T for field image_size", values[i])
  464. } else if value.Valid {
  465. _m.ImageSize = new(string)
  466. *_m.ImageSize = value.String
  467. }
  468. case usagelog.FieldImageInputSize:
  469. if value, ok := values[i].(*sql.NullString); !ok {
  470. return fmt.Errorf("unexpected type %T for field image_input_size", values[i])
  471. } else if value.Valid {
  472. _m.ImageInputSize = new(string)
  473. *_m.ImageInputSize = value.String
  474. }
  475. case usagelog.FieldImageOutputSize:
  476. if value, ok := values[i].(*sql.NullString); !ok {
  477. return fmt.Errorf("unexpected type %T for field image_output_size", values[i])
  478. } else if value.Valid {
  479. _m.ImageOutputSize = new(string)
  480. *_m.ImageOutputSize = value.String
  481. }
  482. case usagelog.FieldImageSizeSource:
  483. if value, ok := values[i].(*sql.NullString); !ok {
  484. return fmt.Errorf("unexpected type %T for field image_size_source", values[i])
  485. } else if value.Valid {
  486. _m.ImageSizeSource = new(string)
  487. *_m.ImageSizeSource = value.String
  488. }
  489. case usagelog.FieldImageSizeBreakdown:
  490. if value, ok := values[i].(*[]byte); !ok {
  491. return fmt.Errorf("unexpected type %T for field image_size_breakdown", values[i])
  492. } else if value != nil && len(*value) > 0 {
  493. if err := json.Unmarshal(*value, &_m.ImageSizeBreakdown); err != nil {
  494. return fmt.Errorf("unmarshal field image_size_breakdown: %w", err)
  495. }
  496. }
  497. case usagelog.FieldVideoCount:
  498. if value, ok := values[i].(*sql.NullInt64); !ok {
  499. return fmt.Errorf("unexpected type %T for field video_count", values[i])
  500. } else if value.Valid {
  501. _m.VideoCount = int(value.Int64)
  502. }
  503. case usagelog.FieldVideoResolution:
  504. if value, ok := values[i].(*sql.NullString); !ok {
  505. return fmt.Errorf("unexpected type %T for field video_resolution", values[i])
  506. } else if value.Valid {
  507. _m.VideoResolution = new(string)
  508. *_m.VideoResolution = value.String
  509. }
  510. case usagelog.FieldVideoDurationSeconds:
  511. if value, ok := values[i].(*sql.NullInt64); !ok {
  512. return fmt.Errorf("unexpected type %T for field video_duration_seconds", values[i])
  513. } else if value.Valid {
  514. _m.VideoDurationSeconds = new(int)
  515. *_m.VideoDurationSeconds = int(value.Int64)
  516. }
  517. case usagelog.FieldCacheTTLOverridden:
  518. if value, ok := values[i].(*sql.NullBool); !ok {
  519. return fmt.Errorf("unexpected type %T for field cache_ttl_overridden", values[i])
  520. } else if value.Valid {
  521. _m.CacheTTLOverridden = value.Bool
  522. }
  523. case usagelog.FieldCreatedAt:
  524. if value, ok := values[i].(*sql.NullTime); !ok {
  525. return fmt.Errorf("unexpected type %T for field created_at", values[i])
  526. } else if value.Valid {
  527. _m.CreatedAt = value.Time
  528. }
  529. default:
  530. _m.selectValues.Set(columns[i], values[i])
  531. }
  532. }
  533. return nil
  534. }
  535. // Value returns the ent.Value that was dynamically selected and assigned to the UsageLog.
  536. // This includes values selected through modifiers, order, etc.
  537. func (_m *UsageLog) Value(name string) (ent.Value, error) {
  538. return _m.selectValues.Get(name)
  539. }
  540. // QueryUser queries the "user" edge of the UsageLog entity.
  541. func (_m *UsageLog) QueryUser() *UserQuery {
  542. return NewUsageLogClient(_m.config).QueryUser(_m)
  543. }
  544. // QueryAPIKey queries the "api_key" edge of the UsageLog entity.
  545. func (_m *UsageLog) QueryAPIKey() *APIKeyQuery {
  546. return NewUsageLogClient(_m.config).QueryAPIKey(_m)
  547. }
  548. // QueryAccount queries the "account" edge of the UsageLog entity.
  549. func (_m *UsageLog) QueryAccount() *AccountQuery {
  550. return NewUsageLogClient(_m.config).QueryAccount(_m)
  551. }
  552. // QueryGroup queries the "group" edge of the UsageLog entity.
  553. func (_m *UsageLog) QueryGroup() *GroupQuery {
  554. return NewUsageLogClient(_m.config).QueryGroup(_m)
  555. }
  556. // QuerySubscription queries the "subscription" edge of the UsageLog entity.
  557. func (_m *UsageLog) QuerySubscription() *UserSubscriptionQuery {
  558. return NewUsageLogClient(_m.config).QuerySubscription(_m)
  559. }
  560. // Update returns a builder for updating this UsageLog.
  561. // Note that you need to call UsageLog.Unwrap() before calling this method if this UsageLog
  562. // was returned from a transaction, and the transaction was committed or rolled back.
  563. func (_m *UsageLog) Update() *UsageLogUpdateOne {
  564. return NewUsageLogClient(_m.config).UpdateOne(_m)
  565. }
  566. // Unwrap unwraps the UsageLog entity that was returned from a transaction after it was closed,
  567. // so that all future queries will be executed through the driver which created the transaction.
  568. func (_m *UsageLog) Unwrap() *UsageLog {
  569. _tx, ok := _m.config.driver.(*txDriver)
  570. if !ok {
  571. panic("ent: UsageLog is not a transactional entity")
  572. }
  573. _m.config.driver = _tx.drv
  574. return _m
  575. }
  576. // String implements the fmt.Stringer.
  577. func (_m *UsageLog) String() string {
  578. var builder strings.Builder
  579. builder.WriteString("UsageLog(")
  580. builder.WriteString(fmt.Sprintf("id=%v, ", _m.ID))
  581. builder.WriteString("user_id=")
  582. builder.WriteString(fmt.Sprintf("%v", _m.UserID))
  583. builder.WriteString(", ")
  584. builder.WriteString("api_key_id=")
  585. builder.WriteString(fmt.Sprintf("%v", _m.APIKeyID))
  586. builder.WriteString(", ")
  587. builder.WriteString("account_id=")
  588. builder.WriteString(fmt.Sprintf("%v", _m.AccountID))
  589. builder.WriteString(", ")
  590. builder.WriteString("request_id=")
  591. builder.WriteString(_m.RequestID)
  592. builder.WriteString(", ")
  593. builder.WriteString("model=")
  594. builder.WriteString(_m.Model)
  595. builder.WriteString(", ")
  596. if v := _m.RequestedModel; v != nil {
  597. builder.WriteString("requested_model=")
  598. builder.WriteString(*v)
  599. }
  600. builder.WriteString(", ")
  601. if v := _m.UpstreamModel; v != nil {
  602. builder.WriteString("upstream_model=")
  603. builder.WriteString(*v)
  604. }
  605. builder.WriteString(", ")
  606. if v := _m.UpstreamResponseModel; v != nil {
  607. builder.WriteString("upstream_response_model=")
  608. builder.WriteString(*v)
  609. }
  610. builder.WriteString(", ")
  611. if v := _m.UpstreamModelMismatch; v != nil {
  612. builder.WriteString("upstream_model_mismatch=")
  613. builder.WriteString(fmt.Sprintf("%v", *v))
  614. }
  615. builder.WriteString(", ")
  616. if v := _m.ChannelID; v != nil {
  617. builder.WriteString("channel_id=")
  618. builder.WriteString(fmt.Sprintf("%v", *v))
  619. }
  620. builder.WriteString(", ")
  621. if v := _m.ModelMappingChain; v != nil {
  622. builder.WriteString("model_mapping_chain=")
  623. builder.WriteString(*v)
  624. }
  625. builder.WriteString(", ")
  626. if v := _m.BillingTier; v != nil {
  627. builder.WriteString("billing_tier=")
  628. builder.WriteString(*v)
  629. }
  630. builder.WriteString(", ")
  631. if v := _m.BillingMode; v != nil {
  632. builder.WriteString("billing_mode=")
  633. builder.WriteString(*v)
  634. }
  635. builder.WriteString(", ")
  636. if v := _m.GroupID; v != nil {
  637. builder.WriteString("group_id=")
  638. builder.WriteString(fmt.Sprintf("%v", *v))
  639. }
  640. builder.WriteString(", ")
  641. if v := _m.SubscriptionID; v != nil {
  642. builder.WriteString("subscription_id=")
  643. builder.WriteString(fmt.Sprintf("%v", *v))
  644. }
  645. builder.WriteString(", ")
  646. builder.WriteString("input_tokens=")
  647. builder.WriteString(fmt.Sprintf("%v", _m.InputTokens))
  648. builder.WriteString(", ")
  649. builder.WriteString("output_tokens=")
  650. builder.WriteString(fmt.Sprintf("%v", _m.OutputTokens))
  651. builder.WriteString(", ")
  652. builder.WriteString("cache_creation_tokens=")
  653. builder.WriteString(fmt.Sprintf("%v", _m.CacheCreationTokens))
  654. builder.WriteString(", ")
  655. builder.WriteString("cache_read_tokens=")
  656. builder.WriteString(fmt.Sprintf("%v", _m.CacheReadTokens))
  657. builder.WriteString(", ")
  658. builder.WriteString("cache_creation_5m_tokens=")
  659. builder.WriteString(fmt.Sprintf("%v", _m.CacheCreation5mTokens))
  660. builder.WriteString(", ")
  661. builder.WriteString("cache_creation_1h_tokens=")
  662. builder.WriteString(fmt.Sprintf("%v", _m.CacheCreation1hTokens))
  663. builder.WriteString(", ")
  664. builder.WriteString("input_cost=")
  665. builder.WriteString(fmt.Sprintf("%v", _m.InputCost))
  666. builder.WriteString(", ")
  667. builder.WriteString("output_cost=")
  668. builder.WriteString(fmt.Sprintf("%v", _m.OutputCost))
  669. builder.WriteString(", ")
  670. builder.WriteString("cache_creation_cost=")
  671. builder.WriteString(fmt.Sprintf("%v", _m.CacheCreationCost))
  672. builder.WriteString(", ")
  673. builder.WriteString("cache_read_cost=")
  674. builder.WriteString(fmt.Sprintf("%v", _m.CacheReadCost))
  675. builder.WriteString(", ")
  676. builder.WriteString("total_cost=")
  677. builder.WriteString(fmt.Sprintf("%v", _m.TotalCost))
  678. builder.WriteString(", ")
  679. builder.WriteString("actual_cost=")
  680. builder.WriteString(fmt.Sprintf("%v", _m.ActualCost))
  681. builder.WriteString(", ")
  682. builder.WriteString("rate_multiplier=")
  683. builder.WriteString(fmt.Sprintf("%v", _m.RateMultiplier))
  684. builder.WriteString(", ")
  685. builder.WriteString("long_context_billing_applied=")
  686. builder.WriteString(fmt.Sprintf("%v", _m.LongContextBillingApplied))
  687. builder.WriteString(", ")
  688. if v := _m.AccountRateMultiplier; v != nil {
  689. builder.WriteString("account_rate_multiplier=")
  690. builder.WriteString(fmt.Sprintf("%v", *v))
  691. }
  692. builder.WriteString(", ")
  693. builder.WriteString("billing_type=")
  694. builder.WriteString(fmt.Sprintf("%v", _m.BillingType))
  695. builder.WriteString(", ")
  696. builder.WriteString("stream=")
  697. builder.WriteString(fmt.Sprintf("%v", _m.Stream))
  698. builder.WriteString(", ")
  699. if v := _m.DurationMs; v != nil {
  700. builder.WriteString("duration_ms=")
  701. builder.WriteString(fmt.Sprintf("%v", *v))
  702. }
  703. builder.WriteString(", ")
  704. if v := _m.FirstTokenMs; v != nil {
  705. builder.WriteString("first_token_ms=")
  706. builder.WriteString(fmt.Sprintf("%v", *v))
  707. }
  708. builder.WriteString(", ")
  709. if v := _m.UserAgent; v != nil {
  710. builder.WriteString("user_agent=")
  711. builder.WriteString(*v)
  712. }
  713. builder.WriteString(", ")
  714. if v := _m.IPAddress; v != nil {
  715. builder.WriteString("ip_address=")
  716. builder.WriteString(*v)
  717. }
  718. builder.WriteString(", ")
  719. builder.WriteString("image_count=")
  720. builder.WriteString(fmt.Sprintf("%v", _m.ImageCount))
  721. builder.WriteString(", ")
  722. if v := _m.ImageSize; v != nil {
  723. builder.WriteString("image_size=")
  724. builder.WriteString(*v)
  725. }
  726. builder.WriteString(", ")
  727. if v := _m.ImageInputSize; v != nil {
  728. builder.WriteString("image_input_size=")
  729. builder.WriteString(*v)
  730. }
  731. builder.WriteString(", ")
  732. if v := _m.ImageOutputSize; v != nil {
  733. builder.WriteString("image_output_size=")
  734. builder.WriteString(*v)
  735. }
  736. builder.WriteString(", ")
  737. if v := _m.ImageSizeSource; v != nil {
  738. builder.WriteString("image_size_source=")
  739. builder.WriteString(*v)
  740. }
  741. builder.WriteString(", ")
  742. builder.WriteString("image_size_breakdown=")
  743. builder.WriteString(fmt.Sprintf("%v", _m.ImageSizeBreakdown))
  744. builder.WriteString(", ")
  745. builder.WriteString("video_count=")
  746. builder.WriteString(fmt.Sprintf("%v", _m.VideoCount))
  747. builder.WriteString(", ")
  748. if v := _m.VideoResolution; v != nil {
  749. builder.WriteString("video_resolution=")
  750. builder.WriteString(*v)
  751. }
  752. builder.WriteString(", ")
  753. if v := _m.VideoDurationSeconds; v != nil {
  754. builder.WriteString("video_duration_seconds=")
  755. builder.WriteString(fmt.Sprintf("%v", *v))
  756. }
  757. builder.WriteString(", ")
  758. builder.WriteString("cache_ttl_overridden=")
  759. builder.WriteString(fmt.Sprintf("%v", _m.CacheTTLOverridden))
  760. builder.WriteString(", ")
  761. builder.WriteString("created_at=")
  762. builder.WriteString(_m.CreatedAt.Format(time.ANSIC))
  763. builder.WriteByte(')')
  764. return builder.String()
  765. }
  766. // UsageLogs is a parsable slice of UsageLog.
  767. type UsageLogs []*UsageLog