github.com/Bio-core/jtree@v0.0.0-20190705165106-1d7a7e7d6272/repos/experiment_repo.go (about)

     1  package repos
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  
     7  	database "github.com/Bio-core/jtree/database"
     8  	"github.com/Bio-core/jtree/models"
     9  )
    10  
    11  //InsertExperiment allows users to add generic objects to a collection in the database
    12  func InsertExperiment(experiment *models.Experiment) bool {
    13  	stmt, err := database.DBUpdate.Prepare("INSERT INTO `experiments` (`experiment_id`,`study_id`,`panel_assay_screened`,`test_date`,`chip_cartridge_barcode`,`complete_date`,`pcr`,`sample_id`,`project_name`,`priority`,`opened_date`,`project_id`,`has_project_files`,`procedure_order_datetime`)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?);")
    14  
    15  	if err != nil {
    16  		log.Fatal(err)
    17  	}
    18  	_, err = stmt.Exec(
    19  		experiment.ExperimentID,
    20  		experiment.StudyID,
    21  		experiment.PanelAssayScreened,
    22  		experiment.TestDate.Format(shortForm),
    23  		experiment.ChipCartridgeBarcode,
    24  		experiment.CompleteDate.Format(shortForm),
    25  		experiment.Pcr,
    26  		experiment.SampleID,
    27  		experiment.ProjectName,
    28  		experiment.Priority,
    29  		experiment.OpenedDate.Format(shortForm),
    30  		experiment.ProjectID,
    31  		experiment.HasProjectFiles,
    32  		experiment.ProcedureOrderDatetime.Format(shortForm))
    33  	stmt.Close()
    34  	if err != nil {
    35  		fmt.Println(err)
    36  		return false
    37  	}
    38  	return true
    39  }
    40  
    41  //GetExperimentByID gets all and results a list of samples
    42  func GetExperimentByID(ID string) *models.Experiment {
    43  	experiments := []*models.Experiment{}
    44  	query := models.Query{}
    45  	query.SelectedFields = make([]string, 0)
    46  	query.SelectedFields = append(query.SelectedFields, "*")
    47  	query.SelectedTables = make([]string, 0)
    48  	query.SelectedTables = append(query.SelectedTables, "experiments")
    49  	query.SelectedCondition = make([][]string, 0)
    50  	//query.SelectedCondition = append(query.SelectedCondition, make([]string, 0))
    51  	conditions := []string{"AND", "experiments.experiment_id", "Equal to", ID}
    52  	query.SelectedCondition = append(query.SelectedCondition, conditions)
    53  
    54  	queryString := database.BuildQuery(query)
    55  	err := database.DBSelect.Select(&experiments, queryString)
    56  	if err != nil {
    57  		fmt.Println(err)
    58  		return nil
    59  	}
    60  	if len(experiments) == 0 {
    61  		return nil
    62  	}
    63  	return experiments[0]
    64  }
    65  
    66  //UpdateExperiment allows users to add generic objects to a collection in the database
    67  func UpdateExperiment(experiment *models.Experiment) bool {
    68  	stmt, err := database.DBUpdate.Prepare("UPDATE `experiments` SET `experiment_id` = ?,`study_id` = ?,`panel_assay_screened` = ?,`test_date` = ?,`chip_cartridge_barcode` = ?,`complete_date` = ?,`pcr` = ?,`sample_id` = ?,`project_name` = ?,`priority` = ?,`opened_date` = ?,`project_id` = ?,`has_project_files` = ?,`procedure_order_datetime` = ? WHERE `experiment_id` = ?;")
    69  
    70  	if err != nil {
    71  		log.Fatal(err)
    72  	}
    73  	_, err = stmt.Exec(
    74  		experiment.ExperimentID,
    75  		experiment.StudyID,
    76  		experiment.PanelAssayScreened,
    77  		experiment.TestDate.Format(shortForm),
    78  		experiment.ChipCartridgeBarcode,
    79  		experiment.CompleteDate.Format(shortForm),
    80  		experiment.Pcr,
    81  		experiment.SampleID,
    82  		experiment.ProjectName,
    83  		experiment.Priority,
    84  		experiment.OpenedDate.Format(shortForm),
    85  		experiment.ProjectID,
    86  		experiment.HasProjectFiles,
    87  		experiment.ProcedureOrderDatetime.Format(shortForm),
    88  		experiment.ExperimentID)
    89  	stmt.Close()
    90  	if err != nil {
    91  		fmt.Println(err)
    92  		return false
    93  	}
    94  	return true
    95  }