/ ent / item.go
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