Add author id to strains

This commit is contained in:
Matthew Dillon 2015-04-22 16:01:52 -08:00
parent 77cb7828cf
commit 1a30cd16bd
2 changed files with 10 additions and 7 deletions

View file

@ -10,13 +10,15 @@ CREATE TABLE strains (
accession_banks CHARACTER VARYING(100) NULL, accession_banks CHARACTER VARYING(100) NULL,
genbank_embl_ddb CHARACTER VARYING(100) NULL, genbank_embl_ddb CHARACTER VARYING(100) NULL,
isolated_from CHARACTER VARYING(100) NULL, isolated_from CHARACTER VARYING(100) NULL,
author_id BIGINT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL, created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL, deleted_at TIMESTAMP WITH TIME ZONE NULL,
CONSTRAINT strain_pkey PRIMARY KEY (id), CONSTRAINT strain_pkey PRIMARY KEY (id),
FOREIGN KEY (species_id) REFERENCES species(id) FOREIGN KEY (species_id) REFERENCES species(id),
FOREIGN KEY (author_id) REFERENCES users(id)
); );
CREATE INDEX species_id_idx ON strains (species_id); CREATE INDEX species_id_idx ON strains (species_id);

View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"database/sql"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@ -28,6 +29,7 @@ type StrainBase struct {
AccessionBanks string `db:"accession_banks" json:"accessionBanks"` AccessionBanks string `db:"accession_banks" json:"accessionBanks"`
GenbankEmblDdb NullString `db:"genbank_embl_ddb" json:"genbankEmblDdb"` GenbankEmblDdb NullString `db:"genbank_embl_ddb" json:"genbankEmblDdb"`
IsolatedFrom NullString `db:"isolated_from" json:"isolatedFrom"` IsolatedFrom NullString `db:"isolated_from" json:"isolatedFrom"`
AuthorId int64 `db:"author_id" json:"author"`
CreatedAt time.Time `db:"created_at" json:"createdAt"` CreatedAt time.Time `db:"created_at" json:"createdAt"`
UpdatedAt time.Time `db:"updated_at" json:"updatedAt"` UpdatedAt time.Time `db:"updated_at" json:"updatedAt"`
DeletedAt NullTime `db:"deleted_at" json:"deletedAt"` DeletedAt NullTime `db:"deleted_at" json:"deletedAt"`
@ -139,7 +141,7 @@ func dbGetStrains(opt *StrainListOptions) ([]*Strain, error) {
func dbGetStrain(id int64, genus string) (*Strain, error) { func dbGetStrain(id int64, genus string) (*Strain, error) {
var strain Strain var strain Strain
sql := `SELECT st.*, sp.species_name, array_agg(m.id) AS measurements, q := `SELECT st.*, sp.species_name, array_agg(m.id) AS measurements,
COUNT(m) AS total_measurements COUNT(m) AS total_measurements
FROM strains st FROM strains st
INNER JOIN species sp ON sp.id=st.species_id INNER JOIN species sp ON sp.id=st.species_id
@ -147,12 +149,11 @@ func dbGetStrain(id int64, genus string) (*Strain, error) {
LEFT OUTER JOIN measurements m ON m.strain_id=st.id LEFT OUTER JOIN measurements m ON m.strain_id=st.id
WHERE st.id=$2 WHERE st.id=$2
GROUP BY st.id, sp.species_name;` GROUP BY st.id, sp.species_name;`
err := DBH.SelectOne(&strain, sql, genus, id) if err := DBH.SelectOne(&strain, q, genus, id); err != nil {
if err != nil { if err == sql.ErrNoRows {
return nil, err
}
if &strain == nil {
return nil, ErrStrainNotFound return nil, ErrStrainNotFound
} }
return nil, err
}
return &strain, nil return &strain, nil
} }