Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
14d4dba
Create database
abdullahalzaghir Mar 31, 2023
f3c0270
updated
abdullahalzaghir Apr 1, 2023
b704fc7
add_book
abdullahalzaghir Apr 3, 2023
ca28b6c
borrow_book
abdullahalzaghir Apr 3, 2023
39274e1
Create .gitignore
abdullahalzaghir Apr 3, 2023
64aacb1
search_about_the_book_using_nameadn_ author
Mohammadfalah2400 Apr 3, 2023
c26636e
new_test
Mohammadfalah2400 Apr 3, 2023
8371cf7
Recently_added
Mohammadfalah2400 Apr 3, 2023
7bc203a
updated
abdullahalzaghir Apr 4, 2023
f5279a6
Update database.py
abdullahalzaghir Apr 4, 2023
d10ab87
Merge branch 'main' of https://github.com/abdullahalzaghir/sample-lib…
abdullahalzaghir Apr 4, 2023
513e21e
updated
abdullahalzaghir Apr 4, 2023
d86e40a
Update database.py
abdullahalzaghir Apr 4, 2023
3de9cf3
Update cli_library.sql
abdullahalzaghir Apr 4, 2023
81061d8
Update main.py
abdullahalzaghir Apr 4, 2023
c979344
Update .gitignore
abdullahalzaghir Apr 4, 2023
31a8612
updated
abdullahalzaghir Apr 4, 2023
3b3bd8c
Update main.py
abdullahalzaghir Apr 4, 2023
c0b2117
statistics
abdullahalzaghir Apr 4, 2023
d6a21d4
updated
abdullahalzaghir Apr 5, 2023
9a063b1
fav_book
Mohammadfalah2400 Apr 5, 2023
7a27b91
most read genres
abdullahalzaghir Apr 5, 2023
e44a311
most_author
Mohammadfalah2400 Apr 5, 2023
fc45fd9
Merge branch 'main' of https://github.com/abdullahalzaghir/sample-lib…
Mohammadfalah2400 Apr 5, 2023
cbf6f5b
readme
yunusemre000 Apr 6, 2023
d56b79b
updated
abdullahalzaghir Apr 7, 2023
9e804ed
Update README.md
yunusemre000 Apr 7, 2023
302b03a
Update README.md
yunusemre000 Apr 7, 2023
b536a1f
update
abdullahalzaghir Apr 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ERD_pgadmin.pgerd

Large diffs are not rendered by default.

50 changes: 46 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,48 @@
# Sample Library CLI App
# Library CLI App

This repository can be used as a starting point to the project.
## Description

This is an library management system.This Library CLI app has all the features of a Library Management System .

## CLI Application

The primary goal of CLI is to allow the developer to create commands quickly and with very little compile or runtime configuration.

![Screenshot 2022-11-27 at 14 03 19](https://user-images.githubusercontent.com/108811520/230594419-a0a90fba-8949-436b-9ccf-c798dc762c90.png)




## Features

- Sign Up & Sign in
- Search by name
- Search by author
- Recently added
- Most Read Books
- Most Favorite Books
- Most Read Genres
- Most Read Authors
- Add Book
- Borrow Book
- Return Book
- Statistic



## General Requirements

- PostgreSQL
- Python
- Typer Library for Python


## Credits
Mentor: [@iremugurlu](https://github.com/iremugurlu)
- [@abdullahalzaghir](https://github.com/abdullahalzaghir)
- [@Mohammadfalah2400](https://github.com/Mohammadfalah2400)

- [@gmaknl21](https://github.com/gmaknl21)
- [@Burhan-Data](https://github.com/Burhan-Data)
- [@yunusemre000](https://github.com/yunusemre000)

- You need to add `@app.command()` to the beginning of your function to add new commands.
- There is an example `display_table()` function showing how you can create tables.
141 changes: 141 additions & 0 deletions cli_library.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
CREATE TABLE "user" (
"username" varchar(255) NOT NULL,
"password" int NOT NULL,
CONSTRAINT "user_pk" PRIMARY KEY ("username")
) WITH (
OIDS=FALSE
);



CREATE TABLE "books" (
"id" serial NOT NULL,
"name" varchar(255) NOT NULL,
"pages" bigint NOT NULL,
CONSTRAINT "books_pk" PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);



CREATE TABLE "author" (
"id" serial NOT NULL,
"author_name" varchar(255) NOT NULL,
CONSTRAINT "author_pk" PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);



CREATE TABLE "book_author" (
"book_id" bigint NOT NULL,
"author_id" bigint NOT NULL
) WITH (
OIDS=FALSE
);



CREATE TABLE "genre" (
"genre_id" serial NOT NULL,
"title" TEXT NOT NULL,
CONSTRAINT "genre_pk" PRIMARY KEY ("genre_id")
) WITH (
OIDS=FALSE
);



CREATE TABLE "genre_book" (
"book_id" bigint NOT NULL,
"genre_id" bigint NOT NULL
) WITH (
OIDS=FALSE
);



CREATE TABLE "borrowed_books" (
"bb_id" serial NOT NULL,
"book_id" bigint NOT NULL,
"username" varchar(255) NOT NULL,
CONSTRAINT "borrowed_books_pk" PRIMARY KEY ("bb_id")
) WITH (
OIDS=FALSE
);



CREATE TABLE "inventory" (
"inventory_id" serial NOT NULL,
"book_id" bigint NOT NULL,
"last_update" DATE NOT NULL,
CONSTRAINT "inventory_pk" PRIMARY KEY ("inventory_id")
) WITH (
OIDS=FALSE
);



CREATE TABLE "fav_books" (
"fav_id" serial NOT NULL,
"book_id" bigint NOT NULL,
"username" varchar(255) NOT NULL,
CONSTRAINT "fav_books_pk" PRIMARY KEY ("fav_id")
) WITH (
OIDS=FALSE
);



CREATE TABLE "read_books" (
"mark_id" serial NOT NULL,
"username" varchar(255) NOT NULL,
"book_id" bigint NOT NULL,
CONSTRAINT "read_books_pk" PRIMARY KEY ("mark_id")
) WITH (
OIDS=FALSE
);






ALTER TABLE "book_author" ADD CONSTRAINT "book_author_fk0" FOREIGN KEY ("book_id") REFERENCES "books"("id");
ALTER TABLE "book_author" ADD CONSTRAINT "book_author_fk1" FOREIGN KEY ("author_id") REFERENCES "author"("id");


ALTER TABLE "genre_book" ADD CONSTRAINT "genre_book_fk0" FOREIGN KEY ("book_id") REFERENCES "books"("id");
ALTER TABLE "genre_book" ADD CONSTRAINT "genre_book_fk1" FOREIGN KEY ("genre_id") REFERENCES "genre"("genre_id");

ALTER TABLE "borrowed_books" ADD CONSTRAINT "borrowed_books_fk0" FOREIGN KEY ("book_id") REFERENCES "books"("id");
ALTER TABLE "borrowed_books" ADD CONSTRAINT "borrowed_books_fk1" FOREIGN KEY ("username") REFERENCES "user"("username");

ALTER TABLE "inventory" ADD CONSTRAINT "inventory_fk0" FOREIGN KEY ("book_id") REFERENCES "books"("id");

ALTER TABLE "fav_books" ADD CONSTRAINT "fav_books_fk0" FOREIGN KEY ("book_id") REFERENCES "books"("id");
ALTER TABLE "fav_books" ADD CONSTRAINT "fav_books_fk1" FOREIGN KEY ("username") REFERENCES "user"("username");

ALTER TABLE "read_books" ADD CONSTRAINT "read_books_fk0" FOREIGN KEY ("username") REFERENCES "user"("username");
ALTER TABLE "read_books" ADD CONSTRAINT "read_books_fk1" FOREIGN KEY ("book_id") REFERENCES "books"("id");


INSERT INTO "user" (username, password) VALUES ('john2', '12345');
INSERT INTO "user" (username, password) VALUES ('jbiever1', '4568');
INSERT INTO "user" (username, password) VALUES ('sthomazet2', '7891');













18 changes: 18 additions & 0 deletions config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from configparser import ConfigParser

def config(filename, section):
# create a parser
parser = ConfigParser()
# read config file
parser.read(filename)

# get section, default to postgresql
db = {}
if parser.has_section(section):
params = parser.items(section)
for param in params:
db[param[0]] = param[1]
else:
raise Exception('Section {0} not found in the {1} file'.format(section, filename))

return db
Loading