add 'childrens' as a field on books
ci/woodpecker/push/woodpecker Pipeline was successful Details

This commit is contained in:
David 2023-10-08 15:05:15 -04:00
parent 1069dadd10
commit 77ddc7ec8e
5 changed files with 34 additions and 12 deletions

View File

@ -155,7 +155,7 @@ func (m *MySQL) GetAllBooks(ctx context.Context) ([]media.Book, error) {
allBooksQuery := fmt.Sprintf(`SELECT
id, title, authors, sortauthor, isbn10, isbn13, format,
genre, publisher, series, volume, year, signed,
description, notes, coverurl
description, notes, coverurl, childrens
FROM %s`, m.tableName)
books := []media.Book{}
@ -174,7 +174,7 @@ func (m *MySQL) GetAllBooks(ctx context.Context) ([]media.Book, error) {
&b.Format, &b.Genre, &b.Publisher,
&b.Series, &b.Volume, &b.Year,
&b.Signed, &b.Description, &b.Notes,
&b.CoverURL)
&b.CoverURL, &b.Childrens)
if err != nil {
return nil, err
}
@ -193,9 +193,9 @@ func (m *MySQL) AddBook(ctx context.Context, b *media.Book) error {
res, err := m.connection.ExecContext(ctx, `
INSERT INTO `+m.tableName+`
(title, authors, sortauthor, isbn10, isbn13, format, genre, publisher, series, volume, year, signed, description, notes, coverurl)
(title, authors, sortauthor, isbn10, isbn13, format, genre, publisher, series, volume, year, signed, description, notes, coverurl, childrens)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
b.Title,
strings.Join(b.Authors, ";"),
b.SortAuthor,
@ -211,6 +211,7 @@ func (m *MySQL) AddBook(ctx context.Context, b *media.Book) error {
b.Description,
b.Notes,
b.CoverURL,
b.Childrens,
)
if err != nil {
return err
@ -251,6 +252,7 @@ func (m *MySQL) UpdateBook(ctx context.Context, old, new *media.Book) error {
description=?
notes=?
coverurl=?
childrens=?
WHERE id=?`,
new.Title,
strings.Join(new.Authors, ";"),
@ -267,6 +269,7 @@ func (m *MySQL) UpdateBook(ctx context.Context, old, new *media.Book) error {
new.Description,
new.Notes,
new.CoverURL,
new.Childrens,
old.ID)
if err != nil {
return err

View File

@ -10,9 +10,17 @@ function init() {
// prepare response
books.forEach(apiResponseParsing);
document.getElementById("search").addEventListener("input", (e) => {
renderTable(search(books, e.target.value));
renderTable(
search(
books,
e.target.value,
document.getElementById("childrens").checked
)
);
});
renderTable(books);
renderTable(
search(books, "", document.getElementById("childrens").checked)
);
});
}
@ -81,12 +89,12 @@ function apiResponseParsing(book) {
return book;
}
function search(books, searchBy) {
function search(books, searchBy, includeChildrensBooks) {
searchBy = searchCleaner(searchBy);
if (searchBy !== "") {
books = books.filter(
({ title, authors, genre, publisher, series, year }) => {
return Object.values({
({ title, authors, genre, publisher, series, year, childrens }) => {
var inSearch = Object.values({
title,
authors: authors.join(" "),
genre,
@ -94,6 +102,10 @@ function search(books, searchBy) {
series,
year,
}).find((field) => searchCleaner(field).indexOf(searchBy) !== -1);
if (!includeChildrensBooks) {
return inSearch && !childrens;
}
return inSearch;
}
);
}

View File

@ -13,7 +13,11 @@
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", init);
</script>
<script defer data-domain="library.yetaga.in" src="https://stats.yetaga.in/js/script.js"></script>
<script
defer
data-domain="library.yetaga.in"
src="https://stats.yetaga.in/js/script.js"
></script>
<meta name="description" content="A personal library record." />
</head>
<body>
@ -28,6 +32,8 @@
>git</a
>
<div id="searchBox">
<span id="bookCount" class="bookCount">Include Childrens Books?</span>
<input id="childrens" type="checkbox" name="childrens" />
<span id="bookCount" class="bookCount">_ books</span>
<input
id="search"

View File

@ -157,10 +157,10 @@ body {
right: 10px;
top: 7px;
text-align: right;
width: 400px;
width: 800px;
}
#searchBox input {
#searchBox input#search {
width: 300px;
font-size: 16px;
background: #f9f8ed;

View File

@ -17,6 +17,7 @@ type Book struct {
Description string `json:"description"`
Notes string `json:"notes"`
CoverURL string `json:"coverURL"`
Childrens bool `json:"childrens"`
}
type Record struct {