item.go
1 // Code generated by ent, DO NOT EDIT. 2 3 package ent 4 5 import ( 6 "fmt" 7 "strings" 8 "time" 9 10 "entgo.io/ent" 11 "entgo.io/ent/dialect/sql" 12 "github.com/google/uuid" 13 "github.com/mrusme/journalist/ent/feed" 14 "github.com/mrusme/journalist/ent/item" 15 ) 16 17 // Item is the model entity for the Item schema. 18 type Item struct { 19 config `json:"-"` 20 // ID of the ent. 21 ID uuid.UUID `json:"id,omitempty"` 22 // ItemGUID holds the value of the "item_guid" field. 23 ItemGUID string `json:"item_guid,omitempty"` 24 // ItemTitle holds the value of the "item_title" field. 25 ItemTitle string `json:"item_title,omitempty"` 26 // ItemDescription holds the value of the "item_description" field. 27 ItemDescription string `json:"item_description,omitempty"` 28 // ItemContent holds the value of the "item_content" field. 29 ItemContent string `json:"item_content,omitempty"` 30 // ItemLink holds the value of the "item_link" field. 31 ItemLink string `json:"item_link,omitempty"` 32 // ItemUpdated holds the value of the "item_updated" field. 33 ItemUpdated time.Time `json:"item_updated,omitempty"` 34 // ItemPublished holds the value of the "item_published" field. 35 ItemPublished time.Time `json:"item_published,omitempty"` 36 // ItemAuthorName holds the value of the "item_author_name" field. 37 ItemAuthorName string `json:"item_author_name,omitempty"` 38 // ItemAuthorEmail holds the value of the "item_author_email" field. 39 ItemAuthorEmail string `json:"item_author_email,omitempty"` 40 // ItemImageTitle holds the value of the "item_image_title" field. 41 ItemImageTitle string `json:"item_image_title,omitempty"` 42 // ItemImageURL holds the value of the "item_image_url" field. 43 ItemImageURL string `json:"item_image_url,omitempty"` 44 // ItemCategories holds the value of the "item_categories" field. 45 ItemCategories string `json:"item_categories,omitempty"` 46 // ItemEnclosures holds the value of the "item_enclosures" field. 47 ItemEnclosures string `json:"item_enclosures,omitempty"` 48 // CrawlerTitle holds the value of the "crawler_title" field. 49 CrawlerTitle string `json:"crawler_title,omitempty"` 50 // CrawlerAuthor holds the value of the "crawler_author" field. 51 CrawlerAuthor string `json:"crawler_author,omitempty"` 52 // CrawlerExcerpt holds the value of the "crawler_excerpt" field. 53 CrawlerExcerpt string `json:"crawler_excerpt,omitempty"` 54 // CrawlerSiteName holds the value of the "crawler_site_name" field. 55 CrawlerSiteName string `json:"crawler_site_name,omitempty"` 56 // CrawlerImage holds the value of the "crawler_image" field. 57 CrawlerImage string `json:"crawler_image,omitempty"` 58 // CrawlerContentHTML holds the value of the "crawler_content_html" field. 59 CrawlerContentHTML string `json:"crawler_content_html,omitempty"` 60 // CrawlerContentText holds the value of the "crawler_content_text" field. 61 CrawlerContentText string `json:"crawler_content_text,omitempty"` 62 // CreatedAt holds the value of the "created_at" field. 63 CreatedAt time.Time `json:"created_at,omitempty"` 64 // UpdatedAt holds the value of the "updated_at" field. 65 UpdatedAt time.Time `json:"updated_at,omitempty"` 66 // Edges holds the relations/edges for other nodes in the graph. 67 // The values are being populated by the ItemQuery when eager-loading is set. 68 Edges ItemEdges `json:"edges"` 69 feed_items *uuid.UUID 70 selectValues sql.SelectValues 71 } 72 73 // ItemEdges holds the relations/edges for other nodes in the graph. 74 type ItemEdges struct { 75 // Feed holds the value of the feed edge. 76 Feed *Feed `json:"feed,omitempty"` 77 // ReadByUsers holds the value of the read_by_users edge. 78 ReadByUsers []*User `json:"read_by_users,omitempty"` 79 // Reads holds the value of the reads edge. 80 Reads []*Read `json:"reads,omitempty"` 81 // loadedTypes holds the information for reporting if a 82 // type was loaded (or requested) in eager-loading or not. 83 loadedTypes [3]bool 84 } 85 86 // FeedOrErr returns the Feed value or an error if the edge 87 // was not loaded in eager-loading, or loaded but was not found. 88 func (e ItemEdges) FeedOrErr() (*Feed, error) { 89 if e.Feed != nil { 90 return e.Feed, nil 91 } else if e.loadedTypes[0] { 92 return nil, &NotFoundError{label: feed.Label} 93 } 94 return nil, &NotLoadedError{edge: "feed"} 95 } 96 97 // ReadByUsersOrErr returns the ReadByUsers value or an error if the edge 98 // was not loaded in eager-loading. 99 func (e ItemEdges) ReadByUsersOrErr() ([]*User, error) { 100 if e.loadedTypes[1] { 101 return e.ReadByUsers, nil 102 } 103 return nil, &NotLoadedError{edge: "read_by_users"} 104 } 105 106 // ReadsOrErr returns the Reads value or an error if the edge 107 // was not loaded in eager-loading. 108 func (e ItemEdges) ReadsOrErr() ([]*Read, error) { 109 if e.loadedTypes[2] { 110 return e.Reads, nil 111 } 112 return nil, &NotLoadedError{edge: "reads"} 113 } 114 115 // scanValues returns the types for scanning values from sql.Rows. 116 func (*Item) scanValues(columns []string) ([]any, error) { 117 values := make([]any, len(columns)) 118 for i := range columns { 119 switch columns[i] { 120 case item.FieldItemGUID, item.FieldItemTitle, item.FieldItemDescription, item.FieldItemContent, item.FieldItemLink, item.FieldItemAuthorName, item.FieldItemAuthorEmail, item.FieldItemImageTitle, item.FieldItemImageURL, item.FieldItemCategories, item.FieldItemEnclosures, item.FieldCrawlerTitle, item.FieldCrawlerAuthor, item.FieldCrawlerExcerpt, item.FieldCrawlerSiteName, item.FieldCrawlerImage, item.FieldCrawlerContentHTML, item.FieldCrawlerContentText: 121 values[i] = new(sql.NullString) 122 case item.FieldItemUpdated, item.FieldItemPublished, item.FieldCreatedAt, item.FieldUpdatedAt: 123 values[i] = new(sql.NullTime) 124 case item.FieldID: 125 values[i] = new(uuid.UUID) 126 case item.ForeignKeys[0]: // feed_items 127 values[i] = &sql.NullScanner{S: new(uuid.UUID)} 128 default: 129 values[i] = new(sql.UnknownType) 130 } 131 } 132 return values, nil 133 } 134 135 // assignValues assigns the values that were returned from sql.Rows (after scanning) 136 // to the Item fields. 137 func (i *Item) assignValues(columns []string, values []any) error { 138 if m, n := len(values), len(columns); m < n { 139 return fmt.Errorf("mismatch number of scan values: %d != %d", m, n) 140 } 141 for j := range columns { 142 switch columns[j] { 143 case item.FieldID: 144 if value, ok := values[j].(*uuid.UUID); !ok { 145 return fmt.Errorf("unexpected type %T for field id", values[j]) 146 } else if value != nil { 147 i.ID = *value 148 } 149 case item.FieldItemGUID: 150 if value, ok := values[j].(*sql.NullString); !ok { 151 return fmt.Errorf("unexpected type %T for field item_guid", values[j]) 152 } else if value.Valid { 153 i.ItemGUID = value.String 154 } 155 case item.FieldItemTitle: 156 if value, ok := values[j].(*sql.NullString); !ok { 157 return fmt.Errorf("unexpected type %T for field item_title", values[j]) 158 } else if value.Valid { 159 i.ItemTitle = value.String 160 } 161 case item.FieldItemDescription: 162 if value, ok := values[j].(*sql.NullString); !ok { 163 return fmt.Errorf("unexpected type %T for field item_description", values[j]) 164 } else if value.Valid { 165 i.ItemDescription = value.String 166 } 167 case item.FieldItemContent: 168 if value, ok := values[j].(*sql.NullString); !ok { 169 return fmt.Errorf("unexpected type %T for field item_content", values[j]) 170 } else if value.Valid { 171 i.ItemContent = value.String 172 } 173 case item.FieldItemLink: 174 if value, ok := values[j].(*sql.NullString); !ok { 175 return fmt.Errorf("unexpected type %T for field item_link", values[j]) 176 } else if value.Valid { 177 i.ItemLink = value.String 178 } 179 case item.FieldItemUpdated: 180 if value, ok := values[j].(*sql.NullTime); !ok { 181 return fmt.Errorf("unexpected type %T for field item_updated", values[j]) 182 } else if value.Valid { 183 i.ItemUpdated = value.Time 184 } 185 case item.FieldItemPublished: 186 if value, ok := values[j].(*sql.NullTime); !ok { 187 return fmt.Errorf("unexpected type %T for field item_published", values[j]) 188 } else if value.Valid { 189 i.ItemPublished = value.Time 190 } 191 case item.FieldItemAuthorName: 192 if value, ok := values[j].(*sql.NullString); !ok { 193 return fmt.Errorf("unexpected type %T for field item_author_name", values[j]) 194 } else if value.Valid { 195 i.ItemAuthorName = value.String 196 } 197 case item.FieldItemAuthorEmail: 198 if value, ok := values[j].(*sql.NullString); !ok { 199 return fmt.Errorf("unexpected type %T for field item_author_email", values[j]) 200 } else if value.Valid { 201 i.ItemAuthorEmail = value.String 202 } 203 case item.FieldItemImageTitle: 204 if value, ok := values[j].(*sql.NullString); !ok { 205 return fmt.Errorf("unexpected type %T for field item_image_title", values[j]) 206 } else if value.Valid { 207 i.ItemImageTitle = value.String 208 } 209 case item.FieldItemImageURL: 210 if value, ok := values[j].(*sql.NullString); !ok { 211 return fmt.Errorf("unexpected type %T for field item_image_url", values[j]) 212 } else if value.Valid { 213 i.ItemImageURL = value.String 214 } 215 case item.FieldItemCategories: 216 if value, ok := values[j].(*sql.NullString); !ok { 217 return fmt.Errorf("unexpected type %T for field item_categories", values[j]) 218 } else if value.Valid { 219 i.ItemCategories = value.String 220 } 221 case item.FieldItemEnclosures: 222 if value, ok := values[j].(*sql.NullString); !ok { 223 return fmt.Errorf("unexpected type %T for field item_enclosures", values[j]) 224 } else if value.Valid { 225 i.ItemEnclosures = value.String 226 } 227 case item.FieldCrawlerTitle: 228 if value, ok := values[j].(*sql.NullString); !ok { 229 return fmt.Errorf("unexpected type %T for field crawler_title", values[j]) 230 } else if value.Valid { 231 i.CrawlerTitle = value.String 232 } 233 case item.FieldCrawlerAuthor: 234 if value, ok := values[j].(*sql.NullString); !ok { 235 return fmt.Errorf("unexpected type %T for field crawler_author", values[j]) 236 } else if value.Valid { 237 i.CrawlerAuthor = value.String 238 } 239 case item.FieldCrawlerExcerpt: 240 if value, ok := values[j].(*sql.NullString); !ok { 241 return fmt.Errorf("unexpected type %T for field crawler_excerpt", values[j]) 242 } else if value.Valid { 243 i.CrawlerExcerpt = value.String 244 } 245 case item.FieldCrawlerSiteName: 246 if value, ok := values[j].(*sql.NullString); !ok { 247 return fmt.Errorf("unexpected type %T for field crawler_site_name", values[j]) 248 } else if value.Valid { 249 i.CrawlerSiteName = value.String 250 } 251 case item.FieldCrawlerImage: 252 if value, ok := values[j].(*sql.NullString); !ok { 253 return fmt.Errorf("unexpected type %T for field crawler_image", values[j]) 254 } else if value.Valid { 255 i.CrawlerImage = value.String 256 } 257 case item.FieldCrawlerContentHTML: 258 if value, ok := values[j].(*sql.NullString); !ok { 259 return fmt.Errorf("unexpected type %T for field crawler_content_html", values[j]) 260 } else if value.Valid { 261 i.CrawlerContentHTML = value.String 262 } 263 case item.FieldCrawlerContentText: 264 if value, ok := values[j].(*sql.NullString); !ok { 265 return fmt.Errorf("unexpected type %T for field crawler_content_text", values[j]) 266 } else if value.Valid { 267 i.CrawlerContentText = value.String 268 } 269 case item.FieldCreatedAt: 270 if value, ok := values[j].(*sql.NullTime); !ok { 271 return fmt.Errorf("unexpected type %T for field created_at", values[j]) 272 } else if value.Valid { 273 i.CreatedAt = value.Time 274 } 275 case item.FieldUpdatedAt: 276 if value, ok := values[j].(*sql.NullTime); !ok { 277 return fmt.Errorf("unexpected type %T for field updated_at", values[j]) 278 } else if value.Valid { 279 i.UpdatedAt = value.Time 280 } 281 case item.ForeignKeys[0]: 282 if value, ok := values[j].(*sql.NullScanner); !ok { 283 return fmt.Errorf("unexpected type %T for field feed_items", values[j]) 284 } else if value.Valid { 285 i.feed_items = new(uuid.UUID) 286 *i.feed_items = *value.S.(*uuid.UUID) 287 } 288 default: 289 i.selectValues.Set(columns[j], values[j]) 290 } 291 } 292 return nil 293 } 294 295 // Value returns the ent.Value that was dynamically selected and assigned to the Item. 296 // This includes values selected through modifiers, order, etc. 297 func (i *Item) Value(name string) (ent.Value, error) { 298 return i.selectValues.Get(name) 299 } 300 301 // QueryFeed queries the "feed" edge of the Item entity. 302 func (i *Item) QueryFeed() *FeedQuery { 303 return NewItemClient(i.config).QueryFeed(i) 304 } 305 306 // QueryReadByUsers queries the "read_by_users" edge of the Item entity. 307 func (i *Item) QueryReadByUsers() *UserQuery { 308 return NewItemClient(i.config).QueryReadByUsers(i) 309 } 310 311 // QueryReads queries the "reads" edge of the Item entity. 312 func (i *Item) QueryReads() *ReadQuery { 313 return NewItemClient(i.config).QueryReads(i) 314 } 315 316 // Update returns a builder for updating this Item. 317 // Note that you need to call Item.Unwrap() before calling this method if this Item 318 // was returned from a transaction, and the transaction was committed or rolled back. 319 func (i *Item) Update() *ItemUpdateOne { 320 return NewItemClient(i.config).UpdateOne(i) 321 } 322 323 // Unwrap unwraps the Item entity that was returned from a transaction after it was closed, 324 // so that all future queries will be executed through the driver which created the transaction. 325 func (i *Item) Unwrap() *Item { 326 _tx, ok := i.config.driver.(*txDriver) 327 if !ok { 328 panic("ent: Item is not a transactional entity") 329 } 330 i.config.driver = _tx.drv 331 return i 332 } 333 334 // String implements the fmt.Stringer. 335 func (i *Item) String() string { 336 var builder strings.Builder 337 builder.WriteString("Item(") 338 builder.WriteString(fmt.Sprintf("id=%v, ", i.ID)) 339 builder.WriteString("item_guid=") 340 builder.WriteString(i.ItemGUID) 341 builder.WriteString(", ") 342 builder.WriteString("item_title=") 343 builder.WriteString(i.ItemTitle) 344 builder.WriteString(", ") 345 builder.WriteString("item_description=") 346 builder.WriteString(i.ItemDescription) 347 builder.WriteString(", ") 348 builder.WriteString("item_content=") 349 builder.WriteString(i.ItemContent) 350 builder.WriteString(", ") 351 builder.WriteString("item_link=") 352 builder.WriteString(i.ItemLink) 353 builder.WriteString(", ") 354 builder.WriteString("item_updated=") 355 builder.WriteString(i.ItemUpdated.Format(time.ANSIC)) 356 builder.WriteString(", ") 357 builder.WriteString("item_published=") 358 builder.WriteString(i.ItemPublished.Format(time.ANSIC)) 359 builder.WriteString(", ") 360 builder.WriteString("item_author_name=") 361 builder.WriteString(i.ItemAuthorName) 362 builder.WriteString(", ") 363 builder.WriteString("item_author_email=") 364 builder.WriteString(i.ItemAuthorEmail) 365 builder.WriteString(", ") 366 builder.WriteString("item_image_title=") 367 builder.WriteString(i.ItemImageTitle) 368 builder.WriteString(", ") 369 builder.WriteString("item_image_url=") 370 builder.WriteString(i.ItemImageURL) 371 builder.WriteString(", ") 372 builder.WriteString("item_categories=") 373 builder.WriteString(i.ItemCategories) 374 builder.WriteString(", ") 375 builder.WriteString("item_enclosures=") 376 builder.WriteString(i.ItemEnclosures) 377 builder.WriteString(", ") 378 builder.WriteString("crawler_title=") 379 builder.WriteString(i.CrawlerTitle) 380 builder.WriteString(", ") 381 builder.WriteString("crawler_author=") 382 builder.WriteString(i.CrawlerAuthor) 383 builder.WriteString(", ") 384 builder.WriteString("crawler_excerpt=") 385 builder.WriteString(i.CrawlerExcerpt) 386 builder.WriteString(", ") 387 builder.WriteString("crawler_site_name=") 388 builder.WriteString(i.CrawlerSiteName) 389 builder.WriteString(", ") 390 builder.WriteString("crawler_image=") 391 builder.WriteString(i.CrawlerImage) 392 builder.WriteString(", ") 393 builder.WriteString("crawler_content_html=") 394 builder.WriteString(i.CrawlerContentHTML) 395 builder.WriteString(", ") 396 builder.WriteString("crawler_content_text=") 397 builder.WriteString(i.CrawlerContentText) 398 builder.WriteString(", ") 399 builder.WriteString("created_at=") 400 builder.WriteString(i.CreatedAt.Format(time.ANSIC)) 401 builder.WriteString(", ") 402 builder.WriteString("updated_at=") 403 builder.WriteString(i.UpdatedAt.Format(time.ANSIC)) 404 builder.WriteByte(')') 405 return builder.String() 406 } 407 408 // Items is a parsable slice of Item. 409 type Items []*Item