Bu proje, bir kütüphane için üyeleri ve kitapların ödünç alınması işlemlerini yönetebilen bir uygulamayı içermektedir. Projenin çalıştırılabilmesi için bilgisayarınızda Docker'ın kurulu olması gerekmektedir. Docker Compose dosyası kullanılarak PostgreSQL veritabanı ayağa kaldırılacaktır. Proje, Express.js, Joi validator, Knex ORM, PostgreSQL veritabanı, Moment.js, HTTP-status ve dotenv gibi teknolojileri içermektedir. Veritabanında "users", "books" ve "borrowed_books" tabloları bulunmaktadır. Test klasöründe basit testler yazılmıştır. Database dumpını bulabilirsiniz.
- Express.js
- Joi Validator
- Knex ORM
- PostgreSQL Database
- Moment.js
- HTTP-Status
- Dotenv
- Nodemon (Dev Dependency)
- id
- name
- available
- id
- name
- id
- user_id
- book_id
- returned_at
- score
Gerekli bağımlılıkları yükleyin:
npm install
Docker ile PostgreSQL'yi başlatın:
docker-compose up -d
Proje kök dizininde aşağıdaki komutu kullanarak tabloları migrate etmelisiniz:
npx knex migrate:latest
Projeyi başlatın.
npm start
Aşağıda proje tarafından sunulan API'lerin kullanımı hakkında bilgiler bulunmaktadır.
Endpoint: /users
(GET)
Açıklama: Bu endpoint, sistemde kayıtlı olan bütün kullanıcıları listelemek için kullanılır.
Endpoint: /users/:id
(GET)
Açıklama: Belirtilen ID'ye sahip kullanıcının bilgilerine erişim sağlar. Aynı zamanda bu kullanıcının geçmişte ödünç aldığı kitaplar ve şu anda ödünç aldığı kitapları görüntüler.
Endpoint: /users
(POST)
Açıklama: Yeni bir kullanıcı oluşturmak için kullanılır.
Parametreler:
name
(zorunlu)
Endpoint: /books
(GET)
Açıklama: Bu endpoint, sistemde kayıtlı olan bütün kitapları listelemek için kullanılır.
Endpoint: /books/:id
(GET)
Açıklama: Belirtilen ID'ye sahip kitabın bilgilerine erişim sağlar. Aynı zamanda bu kitabın ortalama değerlendirme puanını görüntüler.
Endpoint: /books
(POST)
Açıklama: Bir kullanıcının bilgilerini getirir
Parametreler:
name
(zorunlu)
Endpoint: /users/:user_id/borrow/:book_id
(POST)
Açıklama: Belirtilen kullanıcı tarafından belirtilen kitabı ödünç almak için kullanılır.
Endpoint: /users/:user_id/return/:book_id
(POST)
Açıklama: Belirtilen kullanıcı tarafından ödünç alınan ve belirtilen kitabı iade etmek, aynı zamanda kitaba bir değerlendirme puanı vermek için kullanılır.
Parametreler:
score
(zorunlu)