Giter VIP home page Giter VIP logo

library-management-system-using-cockroachdb-hosted-on-rhm's Introduction

Build a library management system using CockroachDB hosted on Red Hat Marketplace

A library management system is software that maintains a library's records. It captures data specific to the books on hand, which books have been rented, late fees, member information, and more.

In this code pattern, we show you how to build a library management system using CockroachDB hosted on Red Hat Marketplace. CockroachDB is an ultra resilient, distributed SQL that can easily scale-out serializable transactions for your apps and services. Its cloud-native architecture makes it easier to scale and also guarantees consistent transactions across multiple regions and multiple clouds.

When you have completed this code pattern, you will understand how to:

  • Install CockroachDB Operator from Red Hat Marketplace on an OpenShift Cluster
  • Create a CockroachDB cluster instance
  • Create a user and database in CockroachDB
  • Store and query unstructured JSON data from a third-party API in CockroachDB
  • Manage CockroachDB cluster from the Cluster Overview page

Flow

  1. User performs an operation like borrowing a book or returning a book.
  2. Application updates the appropriate CockroachDB table accordingly.
  3. Application fetches the updated data from the table.
  4. Application displays the updated data that was feteched from the table.

Steps

  1. Clone the repo
  2. Install the CockroachDB Operator from Red Hat Marketplace on OpenShift Cluster
  3. Create a Database in CockroachDB
  4. Port forward CockroachDB
  5. Run the application
  6. Explore the library management system

1. Clone the repo

Clone the library-management-system-using-cockroachdb-hosted-on-rhm repo locally. In a terminal, run:

git clone https://github.com/IBM/library-management-system-using-cockroachdb-hosted-on-rhm

2. Install the CockroachDB Operator from Red Hat Marketplace on OpenShift Cluster

Note: If you have already followed the Get started using a CockroachDB operator hosted on Red Hat Marketplace Tutorial, you can skip this section.

3. Create a database in CockroachDB

  • Create a database called library in CockroachDB.

  • In your terminal, run the following command to spin up a CockroachDB client:

$ kubectl run -it --rm cockroach-client \
--image=cockroachdb/cockroach \
--restart=Never \
--command -- \
./cockroach sql --insecure --host=example-cockroachdb-public.cockroachdb-test
  • This should run the CockroachDB client and take you to a SQL Command Prompt as shown. If you don't see a command prompt, try pressing Enter.
[email protected]:26257/defaultdb>
  • Create a database called library by running the following command:

[email protected]:26257/defaultdb> CREATE DATABASE library;
  • You can come out of the SQL Prompt by the \q command:

[email protected]:26257/defaultdb> \q

4. Port forward CockroachDB

Once the CockroachDB Operator is set up successfully on your OpenShift Cluster, you need to port forward the CockroachDB database instance from OpenShift to establish connection in our application locally.

  • In your terminal, run the following command to port forward the 26257 port from the CockroachDB database instance.

NOTE: You must be logged in with your OC login credentials before running the following commands.

$ kubectl port-forward example-cockroachdb-0 26257
Forwarding from 127.0.0.1:26257 -> 26257
Forwarding from [::1]:26257 -> 26257

5. Run the application

  • Go to the cloned repo from step 1. In your terminal, run the following commands to install the required Python libraries and run the application.

    • Install the required Python libraries by running the following command:
    $ pip install -r requirements.txt
    • Run the application as follows:
    $ python app.py

The application will be listening on <http://localhost:8090>

6. Explore the library management system

  • Visit http://localhost:8090 on your browser.

  • There are three tabs in the system: Display Books, Borrow Books, and Return Books.

  • In the Display Books tab, you can see three books listed. The book details include:

    • Book Name
    • Book Author
    • Book Availibility
    • Book Amount

NOTE: These details are initialized by the Python script.

  • Click the Borrow Books tab which shows which books you can borrow the from the store. Borrower details include:

    • Borrower Name
    • Borrower Email
    • Available books that can be borrowed
  • Enter your name, email address, and book quantities that you wish to borrow and click Submit as shown.

  • After you've successfully borrowed a book, you can see the number of availibile books decreasing.

  • Click on the Return Books tab. You can return the borrowed books from here.

  • Enter your email address for who borrowed the books, and click Search.

  • Your name, the books that you have borrowed, and the total amount due will be displayed. Click on pay and return to return the books as shown.

  • After you successfully return the books, you will get an aleart like the following:

Notice that the availibility of the books increased again in the Display Books section.

You can verify the table in the ClockroachDB instance through the CockroachDB client from terminal.

  • In your terminal, run the following command to spin up a CockroachDB client:
$ kubectl run -it --rm cockroach-client \
--image=cockroachdb/cockroach \
--restart=Never \
--command -- \
./cockroach sql --insecure --host=example-cockroachdb-public.cockroachdb-test

This should run the CockroachDB client and take you to a SQL Command Prompt as shown. If you don't see a command prompt, press Enter.

[email protected]:26257/defaultdb>
  • From the CockroachDB client, run the following commands to view the user, database and table that were created by the Library Management Application:

    • View users by running the SHOW users; command as follows:
    [email protected]:26257/defaultdb> SHOW users;
      user_name
      `-------------`
      cpuser
      maxroach
      root
      (3 rows)
    
      Time: 3.037641ms
      
    • View databases by running the SHOW databases; command as follows:
    [email protected]:26257/defaultdb> SHOW databases;
      database_name
      `-----------------`
      bank
      defaultdb
      library
      postgres
      system
      (5 rows)
    
      Time: 2.890031ms
    • To view the tables present in the library database, run the USE library; command to switch to library database, and run \d command to view the tables as follows:
    [email protected]:26257/defaultdb> USE library;
      SET
    
      Time: 11.83841ms
    
      [email protected]:26257/library> \d
      table_name
      `----------------------`
      books
      borrowers
      (2 rows)
    
      Time: 3.684617ms
    • Finally, to view the tables books and borrowers, run the SELECT command as follows:
    [email protected]:26257/defaultdb> SELECT * FROM books;
      
    id |        book_name        | book_author | book_price | book_availability
    -----+-------------------------+-------------+------------+--------------------
    1 | Harry Potter            | Jk Rowling  |          2 |                30
    2 | Start with Why          | Simon Sinek |        1.5 |                20
    3 | Programming with Python | John Smith  |        1.5 |                25
    
    [email protected]:26257/defaultdb> SELECT * FROM borrowers;
      
              id         | borrower_name | borrower_email  | book_id | total_price | book_quantity
    ---------------------+---------------+-----------------+---------+-------------+----------------
    572547941512544257 | Manoj         | [email protected] | 1,2,3   |        12.5 | 4,1,2
    

License

This code pattern is licensed under the Apache License, Version 2. Separate third-party code objects invoked within this code pattern are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 and the Apache License, Version 2.

Apache License FAQ

library-management-system-using-cockroachdb-hosted-on-rhm's People

Contributors

manojjahgirdar avatar rahulreddyravipally avatar imgbotapp avatar stevemar avatar emilyannmitchell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.