MCPcopy
hub / github.com/xo/dbtpl / Insert

Method Insert

_examples/django/sqlserver/book.dbtpl.go:35–69  ·  view source on GitHub ↗

Insert inserts the [Book] to the database.

(ctx context.Context, db DB)

Source from the content-addressed store, hash-verified

33
34// Insert inserts the [Book] to the database.
35func (b *Book) Insert(ctx context.Context, db DB) error {
36 switch {
37 case b._exists: // already exists
38 return logerror(&ErrInsertFailed{ErrAlreadyExists})
39 case b._deleted: // deleted
40 return logerror(&ErrInsertFailed{ErrMarkedForDeletion})
41 }
42 // insert (primary key generated and returned by database)
43 const sqlstr = `INSERT INTO django.books (` +
44 `isbn, book_type, title, year, available, books_author_id_fkey` +
45 `) VALUES (` +
46 `@p1, @p2, @p3, @p4, @p5, @p6` +
47 `); SELECT ID = CONVERT(BIGINT, SCOPE_IDENTITY())`
48 // run
49 logf(sqlstr, b.ISBN, b.BookType, b.Title, b.Year, b.Available, b.BooksAuthorIDFkey)
50 rows, err := db.QueryContext(ctx, sqlstr, b.ISBN, b.BookType, b.Title, b.Year, b.Available, b.BooksAuthorIDFkey)
51 if err != nil {
52 return logerror(err)
53 }
54 defer rows.Close()
55 // retrieve id
56 var id int64
57 for rows.Next() {
58 if err := rows.Scan(&id); err != nil {
59 return logerror(err)
60 }
61 }
62 if err := rows.Err(); err != nil {
63 return logerror(err)
64 } // set primary key
65 b.BookID = int64(id)
66 // set exists
67 b._exists = true
68 return nil
69}
70
71// Update updates a [Book] in the database.
72func (b *Book) Update(ctx context.Context, db DB) error {

Callers 1

SaveMethod · 0.95

Calls 3

logerrorFunction · 0.70
QueryContextMethod · 0.65
ScanMethod · 0.45

Tested by

no test coverage detected