Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/helleb0re/bookypedia
The database of books and authors has been written in C++ with Postgres
https://github.com/helleb0re/bookypedia
boost conan cpp cpp20 libpqxx postgres postgresql
Last synced: 4 days ago
JSON representation
The database of books and authors has been written in C++ with Postgres
- Host: GitHub
- URL: https://github.com/helleb0re/bookypedia
- Owner: helleb0re
- Created: 2023-08-07T13:53:05.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-07T13:54:40.000Z (over 1 year ago)
- Last Synced: 2024-10-31T20:07:13.606Z (about 2 months ago)
- Topics: boost, conan, cpp, cpp20, libpqxx, postgres, postgresql
- Language: C++
- Homepage:
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **Bookypedia**
Bookypedia — консольная программа, которая позволяет хранить информацию о книгах в БД Postgres. В программе реализована поддержка трех таблиц: Авторы, Книги, Теги. В качестве SQL-клиента используется библиотека libpqxx. Манипулирование данными происходит с помощью предопределенных команд.
## **Команды**
1. ***AddAuthor***
Команда `AddAuthor ` добавляет в БД автора книги с указанным именем. Пример:
```
AddAuthor Joanne Rowling
AddAuthor Antoine de Saint-Exupery
```2. ***ShowAuthors***
Команда `ShowAuthors` позволяет вывести нумерованный список авторов, отсортированный по алфавиту. Пример:
```
AddAuthor Joanne Rowling
AddAuthor Jack London
ShowAuthors
1. Jack London
2. Joanne Rowling
```3. ***DeleteAuthor***
Команда `DeleteAuthor or empty` Удаляет выбранного автора, все его книги и связанные с этими книгами теги. Пример:
```
DeleteAuthor
1 Jack London
2 Joanne Rowling
Enter author # or empty line to cancel
1
ShowAuthors
1 Joanne Rowling
``````
ShowAuthors
1 Jack London
2 Joanne Rowling
DeleteAuthor Jack London
ShowAuthors
1 Joanne Rowling
```4. ***EditAuthor***
Команда `EditAuthor or empty` позволяет редактировать указанного автора. Пример:
```
EditAuthor
1 Jack London
2 Joanne Rowling
Enter author # or empty line to cancel
2
Enter new name:
J. K. Rowling
EditAuthor Jack London
Enter new name:
John Griffith Chaney
ShowAuthors
1 J. K. Rowling
2 John Griffith Chaney
```5. ***AddBook***
Команда `AddBook ` добавляет в БД книгу с указанным названием и годом публикации. Пример:
```
AddBook 1906 White Fang
Enter author name or empty line to select from list:
Jack London
No author found. Do you want to add Jack London (y/n)?
y
Enter tags (comma separated):
adventure, dog, gold rush, dogs
```6. ***ShowBooks***
Команда `ShowBooks` позволяет вывести нумерованный список книг, отсортированный по названию, по имени автора, по возрастанию года публикации. Пример:
```
ShowBooks
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
3 White Fang by Jack London, 1906
```7. ***ShowAuthorBooks***
Команда `ShowAuthorBooks` выводит нумерованный список книг выбранного автора с годами их выпуска, отсортированный по году публикации и по названию. Пример:
```
ShowAuthorBooks
Select author:
1 Boris Akunin
2 Jack London
3 Joanne Rowling
4 Herman Melville
Enter author # or empty line to cancel
1
1 Azazelle, 1998
2 Murder on the Leviathan, 1998
3 The Turkish Gambit, 1998
4 She Lover of Death, 200
```8. ***ShowBook***
Команда `ShowBook or empty` выводит подробную информацию о книге: автор, название, год публикации, теги, если есть. Пример:
```
ShowBooks
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
3 White Fang by Jack London, 1906
ShowBook White Fang
Title: White Fang
Author: Jack London
Publication year: 1906
Tags: adventure, dog, gold rush
ShowBook The Cloud Atlas
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
Enter the book # or empty line to cancel:
2
Title: The Cloud Atlas
Author: Liam Callanan
Publication year: 2004
ShowBook
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
3 White Fang by Jack London, 1906
Enter the book # or empty line to cancel:
3
Title: White Fang
Author: Jack London
Publication year: 1906
Tags: adventure, dog, gold rush
```9. ***DeleteBook***
Команда `DeleteBook or empty` позволяет удалить книгу, указав её название напрямую или выбрав из списка. Пример:
```
ShowBooks
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
3 White Fang by Jack London, 1906
DeleteBook The Cloud Atlas
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
Enter the book # or empty line to cancel:
2
ShowBooks
1 The Cloud Atlas by David Mitchell, 2004
2 White Fang by Jack London, 1906
DeleteBook
1 The Cloud Atlas by David Mitchell, 2004
2 White Fang by Jack London, 1906
Enter the book # or empty line to cancel:
1
```10. ***EditBook***
Команда `EditBook or empty` позволяет отредактировать книгу, указав её название напрямую или выбрав из списка. Пример:
```
ShowBooks
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
3 White Fan by Jack London, 1906
EditBook White Fan
Enter new title or empty line to use the current one (White Fan):
White Fang
Enter publication year or empty line to use the current one (1906):Enter tags (current tags: adventure, cat, gold rush):
adventure, gold rush, dog
ShowBook White Fang
Title: White Fang
Author: Jack London
Publication year: 1096
Tags: adventure, dog, gold rush
EditBook
1 The Cloud Atlas by David Mitchell, 2004
2 The Cloud Atlas by Liam Callanan, 2004
3 White Fang by Jack London, 1906
Enter the book # or empty line to cancel:
3
Enter new title or empty line to use the current one (White Fang):Enter publication year or empty line to use the current one (1906):
Enter tags (current tags: adventure, dog, gold rush):
adventure, gold rush, dog, wolf
```## **Запуск**
При запуске программа должна считать URL базы данных из переменной окружения BOOKYPEDIA_DB_URL.
```bash
export BOOKYPEDIA_DB_URL=postgres://user:pass@host:port/dbname
```## **Зависимости**
1. [С++20](https://en.cppreference.com/w/cpp/20)
2. [PostgreSQL](https://www.postgresql.org/) 15+ version requires
3. [libpqxx](https://github.com/jtv/libpqxx)
4. [Boost](https://www.boost.org/users/history/version_1_78_0.html) 1.78+ version requires
5. [GCC](https://gcc.gnu.org/) 11+ version requires
6. [CMake](https://cmake.org) 3.11 version requires
7. [Conan](https://conan.io/) 1.* version reqires