Skip to main content

GO API: Database Connection

GO API: Database Connection

client_db.go
 package db  
   
 import (  
      "database/sql"  
      _ "github.com/lib/pq"  
      . "test.com/goapi/app/utils"  
      "sync"  
      "log"  
 )  
   
 var (  
      db    *sql.DB  
      ConnOnce sync.Once  
 )  
   
 // create database connection  
 func GetDBConnection() *sql.DB {  
      var err error  
      ConnOnce.Do(func() {  
           db, err = sql.Open("postgres", "postgresql://"+COCKROACHDB_USERNAME_ENV+"@"+COCKROACHDB_HOST_ENV+":"+COCKROACHDB_PORT_ENV+  
                "/"+COCKROACHDB_DB_ENV+"?"+"sslmode=disable")  
      })  
      if err != nil {  
           log.Fatal("error connecting to the database: ", err)  
      }  
      return db  
 }  
   
 func ExecuteQuery(query string, args string) *sql.Rows{  
      db := GetDBConnection()  
      if args == "" {  
           rows, err := db.Query(query)  
           if err != nil {  
                log.Println("Error in executing query: ", err)  
           }  
           return rows  
      } else {  
           rows, err := db.Query(query, args)  
           if err != nil {  
                log.Println("Error in executing query: ", err)  
           }  
           return rows  
      }  
 }  
   
 func ExecuteCreateQuery(query string, args []interface{}) {  
      db := GetDBConnection()  
      _, err := db.Query(query, args...)  
      if err != nil {  
           log.Println("Error in executing query: ", err)  
      }  
 }  

student_db.go
 package db  
   
 import (  
      . "test.com/goapi/app/model"  
      "database/sql"  
      "log"  
 )  
   
 func parseRow(rows *sql.Rows) []Student {  
      var students []Student  
      for rows.Next() {  
           var (  
                rollNumber int  
                name    string  
                batch   string  
                branch   string  
           )  
           if err := rows.Scan(&rollNumber, &name, &batch, &branch); err != nil {  
                log.Println("error in parsing ", err)  
           }  
           student := Student{  
                RollNumber: rollNumber,  
                Name: name,  
                Batch: batch,  
                Branch: branch,  
           }  
           students = append(students, student)  
      }  
      return students  
 }  
   
 func GetStudentsDB() []Student{  
      query := "SELECT * FROM student_tlb"  
      rows := ExecuteQuery(query, "")  
      students := parseRow(rows)  
      return students   
 }  
   
 func GetStudentDB(rollNumber string) Student{  
      query := "SELECT * FROM student_tlb WHERE roll_number = $1"  
      rows := ExecuteQuery(query, rollNumber)  
      students := parseRow(rows)  
      return students[0]   
 }  
   
 func CreateStudentDB(student Student) {  
      args := make([]interface{}, 4)  
      args[0] = student.RollNumber  
      args[1] = student.Name  
      args[2] = student.Batch  
      args[3] = student.Branch  
      query := "INSERT INTO student_tlb (roll_number, name, batch, branch) VALUES($1, $2, $3, $4)"  
      ExecuteCreateQuery(query, args)  
 }  
   
 func UpdateStudentDB(student Student) {  
      args := make([]interface{}, 4)  
      args[0] = student.Name  
      args[1] = student.Batch  
      args[2] = student.Branch  
      args[3] = student.RollNumber  
      query := "UPDATE student_tlb SET (name, batch, branch) = ($1, $2, $3) WHERE roll_number = $4"  
      ExecuteCreateQuery(query, args)  
 }  
   
 func DeleteStudentDB(rollNumber string) {  
      query := "DELETE FROM student_tlb WHERE roll_number = $1"  
      ExecuteQuery(query, rollNumber)  
 }  
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Comments

Popular posts from this blog

Time, Speed and Distance

Time, Speed And Distance  In this post, We will learn about time, speed and distance. Important Formula Distance = Time x Speed Time = Distance/Speed Speed = Distance/time Important Units Distance: meter (m), kilometre (km) Time: Hour (h), second (s) speed: meter/second (m/s), kilometre/hour  (km/h) Important Conversion 1 km = 1000 meter 1 h = 3600 s 1 km/h = (5/18) m/s 1 m/s = (18/5) km/h Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 

Joint Entrance Exam (JEE): Probability Syllabus

JEE: Probability Syllabus Probability  is a very interesting and different topic of mathematics which doesn't require your previous knowledge of any other chapters other than permutation and combination.  Following topics are the part of Jee syllabus Addition and multiplication rules of probability Addition and multiplication rules of probability Conditional Probability Bayes Theorem Independence of events Computation of probability of events using permutations and combinations Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Haryana Public Service Commission: HPSC 2018

Haryana Public Service Commission: HPSC 2018 Company Name         :  Haryana Public Service Commission: HPSC 2018 Recruitment Post Name                       :   Civil Judge State                            :  Haryana Salary                           :  Rs   27,700-44,770 Number of Vacancy   :  107 Eligibility                     :  Bachelor's Degree in Law Last Date to Apply     :  30-09-2018 Application Details    :  Notification Apply Online              :  Apply Here Government Jobs In  Haryana Please write comments if you f...

Securities and Exchange Board of India Recruitment 2018

Securities and Exchange Board of India  Company Name SEBI Post Name Assistant Manager State India Salary RS 28150-55600 Number of Vacancy 120 Eligibility Graduation Last Date 07-10-2018 Application Details Job Notification Apply Online Job Application Securities and Exchange Board of India (SEBI) Recruitment 2018    Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.