textbrowser / biblioteq

Archive and catalog the world for today's and tomorrow's generations! Available almost everyware. Completed?
https://textbrowser.github.io/biblioteq/
Other
213 stars 44 forks source link

Create a duplicate feature: Book Reservation. Exists with PostgreSQL. #350

Open meteos77 opened 6 months ago

meteos77 commented 6 months ago

Summary of the situation:

This is also the case if a book is requested by a member who has already borrowed it from another member. In this case, we wait for the member to return the book and then put it aside until the next visit.

Summary of request: To be able to give a list to BiblioteQ and if a scan of a reserved book is made : BiblioteQ displays a warning message to the user.

textbrowser commented 5 months ago

"Has been returned." should be "Will be returned." That's because if some person has the book in their closet or shoes or stacked away in a sandwich, the book cannot have been returned to the central library. Right?

textbrowser commented 5 months ago

This is a splendid request for a many reasons. Let's think. Well, you think. Let's consider. What's more proper, consideration or thinking? I think we should think and consider. Sometimes ponder or dwell. Dwelling on a dwelling moment. OK, the rambling will stop. Perhaps for the next release. Since this is per copy, the copy editor should have a status of something indicating that the book is summoned by the centrality of central repositories.

textbrowser commented 5 months ago

We should also define a set of new potential status texts for items in the enumerations thingy. So much work. Beyond lost and deleted and available. Anything like summoned or eaten or sold or auctioned or gifted or lottery winner. Something positive or melancholy. Rivered or oceaned.

meteos77 commented 5 months ago

Thanks for looking into this new feature.

It's true that if the book is stuck in a sandwich it "will be returned" later :-)

I'm not too familiar with the copy function as we only use one copy per book. So I'm discovering this one

I can see that you've been thinking about this for a long time, because with the interfacing you can change the status to "reserve" or "request". it places the book in the right state and when it's returned, if the copy has the right keyword, a message is displayed.

I hope that the mechanism of the relationship between "status in copy explorer" and "return action" won't be too complex to develop.

textbrowser commented 5 months ago

Have not been thinking about it for a long time unless a few minutes is a long time which is for small entities free of time.

textbrowser commented 5 months ago

In PostgreSQL, notify() exists and with QSqlDriver, one may notify a client of any desired event. In your situation, another faraway BQ could be and would be modified if for example the status of a copy was modified. That's some interesting near-real-time bell.

textbrowser commented 4 months ago

This is already cleverly solved. bq

textbrowser commented 4 months ago

A. Create custom query and label it descriptively. B. Execute favorite whenever desired. C. If results exist, action.

textbrowser commented 4 months ago

Background queries, separate tasks, are bothersome for many reasons. And popups are confusing and forgettable unless they're not modal. I suppose the Favorites system could include non-modal popups with special text, also configurable per query, if they return results.

meteos77 commented 4 months ago

The request was to set the book aside as soon as it appeared in the scan: in the process of returning a book by douchette. Like the BQ alert when a member's dues are overdue before the loan is validated.

Of course, we can search for books as a separate activity by SQL query or via the interface.

meteos77 commented 4 months ago

I started looking at the request to use the copy status: SELECT book_copy_info.status, title, author,callnumber, book_copy_info.item_oid AS CopyOidBook, book.myoid AS OidBook FROM book_copy_info INNER JOIN book ON book_copy_info.item_oid = book.myoid WHERE book_copy_info.status LIKE ('Rappelé')

textbrowser commented 4 months ago

In the PostgreSQL universe, a book with a single copy can be requested by several people. As a librarian, the first request will receive the item. When the item is returned, the next patron receives the item. The librarian reads the All Requested category.

textbrowser commented 4 months ago

Popups after every action are annoying and require more options. The methods are present and are available as a process and not as a demand by the software.

textbrowser commented 4 months ago

And a popup after an item is returned is a popup even if the other patron isn't there to reserve the returned item so no one knows the significance of the popup. A reminder that is discarded.

textbrowser commented 4 months ago

And when the patron comes in a week after or a month or 6 months, the popup is gone and someone has to determine if they requested the item anyway. Should BQ popup everyday with a reminder? Nope.

textbrowser commented 4 months ago

This is a process thing not an infinite popup notification reminder until someone takes the copy thing.

textbrowser commented 4 months ago

The world is addicted to notifications.

textbrowser commented 4 months ago

Then you get a 100 books returned and have to set them aside because they may just be checked out. Nah, return them to the shelves and if the patron comes by, reserve them. Again, process. Keep around or not for a few days. How many? Where? All smells and tastes like process and not software.

textbrowser commented 4 months ago

Dysfunction is when you have a thousand sticky notes and nothing is getting completed. Yah, billions of notifications are lost and the software is now a noise generator. Do this and do that don't forget this and put this there and check this and go there and read that.

textbrowser commented 4 months ago

I like Kubuntu and never ever enable notifications. Don't like it. I know that I've plugged in a drive. I know my wireless is disconnected. Tell me something important like my drive is failing imminently or my CPU is overheating. Things that are hidden warrant notifications not things that I'm doing. Drive not recognized? OK, I'll know because I can't access it. I want information not waving hands.

meteos77 commented 4 months ago

For me, I saw this function as an exception rather than a noise generator. Few books are marked as having to emit an alert and be set aside.

It's more like finding the needle in the haystack when it miraculously appears :-)

textbrowser commented 4 months ago
  1. Book returned. A process in a big or little library will have a set-aside-in-case-reserved.
  2. Librarian queries the item to determine if it's desired by anyone else.
  3. Return to 1 or go home.
  4. Home. Done.
textbrowser commented 4 months ago

Quiet software is nice.

meteos77 commented 4 months ago

We'll do without this software feature, but for me, software can also help attract attention.

textbrowser commented 4 months ago

Attraction to it or warn you? BQ warns. But I consider this request a bit more. Even small laptop can house two BiblioteQ instances half-and-half. One for infrequent queries like All Requested. Item returned, let me All Requested refresh. Oh, best set this item aside. But OK, could be lots of requested and noisy. Is a valid request but also invalid because a process is still required. Set it aside? No, I'm an angry cheese, I return it to the shelf. Next person will have to find it. Process broken and BQ sad. Happy BQ instead rests.

meteos77 commented 4 months ago

As well as being a programmer, do you write poetry?

textbrowser commented 4 months ago

No, I find most books boring and dull. Poems usually exist as written things so I don't like. I enjoy the complexity and brevity of video games. No, reading harms the brain. I did accept conclude maybe that education is salvation but it isn't. Some is if you're compassed for skill like being a plumber or nurse or teacher but then those are professions and should be prioritized. But other things are society needs for proper etiquette and normality. Although knowledge is nice to know. Best to know or be ignorant and the question doesn't need knowledge but thought and is approachable without education. Education is good for keeping people with something to consider but not through reading. Writing better. Writing about anything because that's what thinking does. Poetry is skimming and conciseness horizontally but not necessarily vertically and without rhyme it doesn't do so well. Is a poem required to have a resonance. Music without rhythm is fine too without many conditions. So onto poems, not. They are too brief and emotional. They're instructional for those who fancy cerebral nonsense.

textbrowser commented 4 months ago

Maybe by the end of May for LTS releases. :)

meteos77 commented 4 months ago

This is a "bonus" feature request, so enjoy the development and we'll be happy when it's ready.

textbrowser commented 4 months ago

This is really easy to complete for PostgreSQL. For SQLite, this is a lot of work.

textbrowser commented 3 months ago

I think you should migrate to a local PQ database. PQ can be local and or remote. It would be complete, this request. I can help or we can work together on a migration from SQ to PQ.

meteos77 commented 3 months ago

Thank you for your offer to help us switch from SQ -> PQ.

For the moment, we are not ready to switch to PQ. The .sqlite file offers simplicity of management (backup, transfer to other machines, my developments with python).

We've known from the start that we don't have all the possibilities of BiblioteQ with Sqlite. Our knowledge of computers and our available time are constraints.

If the function is too energy-intensive to develop for .sqlite to close the tocket, we'll continue with paper/pencil to do the job :-)

textbrowser commented 3 months ago

It would be duplicating a function and database tables. Like is already done because it was logical but now it would be done for an engine which is meant for personal databases not institutions.

textbrowser commented 3 months ago

Like imagine Google database was SQLite.

textbrowser commented 3 months ago

And you want to add functions to network it or make it appear that it serves a concept of multi-person (as in this example). You wouldn't do that. You'd switch to a multi-person database. Like imagine you are a single-person account on a multi-person computer and you circumvent that by allowing multiple people on your account and then request Linux Mint people to have multiple people on your single account. They would say what? Problem already solved. Is you the problem.

textbrowser commented 3 months ago

So yes this is a request which is illogical people small libraries should use local PostgreSQL because it provides a different paradigm than a personal library. A friend borrowing your item would not have you remember digitally that another friend is borrowing same item and if that was possible you would initially conclude that your configuration is incorrect so you would return to the selection process and ponder. Yes, I best select PQ even though I'm an an individual but perhaps I lend to many people because I have many books; maybe I'm a hoarder or discovered a hidden library or a huge donation so now you're a little librarian and SQLite is not logical.

meteos77 commented 3 months ago

I'm well aware that we're taking an original approach. If we followed the logic of the world, our library wouldn't exist.

The municipality would have to create a job for a librarian, have a contract for adapted computer support and buy the necessary equipment. Volunteers wouldn't just be there to help the library staff. Unfortunately, our settlement area is not dense or wealthy enough to have this kind of structure. So 9 people are trying to keep a "volunteer" library going with their time and skills.

textbrowser commented 3 months ago

By that logic, I should rewrite BQ in Python because only Python is available on a system. That's something else.

textbrowser commented 3 months ago

If one asks something and that something exists in a form - a concluded process - but desires it in another form - a form not suitable for that something - than one must re-consider their original desire. I would like pink platform shoes but all platform shoes are black. I would like you to restructure your factory for this one request. Everything, do it again.

textbrowser commented 3 months ago

The request is really, really completed. Ask SQLite to become a network database. Really, that's the request. Is done. But is not done with how I do it. But is done, done. Well, not done for me. But for you, I need to create a new pencil. You have all these pencils and only one pencil for you. Why not change your imagination - enhance it - to work for these pencils?

textbrowser commented 3 months ago

There proper title of request. Now I can read it many times pondering my life decisions.

textbrowser commented 3 months ago

:)

meteos77 commented 3 months ago

No worries, I understood you correctly, I told you to close the ticket. If we want the functionality, we need to switch to the PostgreSQL version.

textbrowser commented 3 months ago

So SQLite is a non-patron database because anyone can access it. You, a friend, me, GitHub. How would an item request work? Like who puts in the request? How do you see requests of a patron because you don't log in so you'd see all of them. How do you cancel? There are some files which could be modified for this, plus maybe another table, but the concept may not work.

meteos77 commented 3 months ago

I have the impression that my initial request has not been properly understood. Perhaps my explanations were poor or the translation impressive?

If I had to program my request, I would have done something like this:

At each scan with the handheld BQ makes the comparison between the barcode entered/scanned and the list of documents searched -> if found then BQ emits a message to the user.

As I don't have your technical analysis and programming talent, I can't make a concrete proposal in C++ :-)

meteos77 commented 3 months ago

I have the impression that you want the registration to the new borrower to be completed as soon as the document is returned?

textbrowser commented 3 months ago

In PQ world. A patron requests an item and a librarian fulfills the request whenever the item is available. The patron may also cancel a request if it hasn't been fulfilled. There may be other requests for that item and the librarian should fulfill the newest request.

1. Patron requests.
2. Librarian fulfills.
3. Patron visits library and fetches item.

1. Patron requests A.
2. Patron requests A.
3. Librarian fulfills #1.
4. #1 returns and librarian sets aside A for #2.

Is very simple process.

textbrowser commented 3 months ago

The process you just described is very complex because it now requires a file somewhere.

meteos77 commented 3 months ago

Forget it, if it's too complicated, our current method works quite well.

During the returns, the volunteers' memory helps to find documents. And we search the shelves from time to time to see if we've missed any.

meteos77 commented 3 months ago

Tomorrow, we have a large delivery of 750 documents ... a bit of work for BiblioteQ :-)