All files / src/dao ArtikkelDAO.js

100% Statements 11/11
100% Branches 0/0
100% Functions 7/7
100% Lines 11/11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92    1x                                                   1x   1x                 2x             1x               1x               1x               1x 1x       1x                 1x              
// @flow
 
const Dao = require("./dao.js");
 
class Article {
  tittel: string;
  innhold: string;
  id: number;
  kategori: string;
  bildeLink: string;
  bildeTekst: string;
  isViktig: boolean;
  avgRating: number;
  opprettet: string;
  endret: string;
}
 
class sqlResult {
  fieldCount: number;
  affectedRows: number;
  insertId: number;
  serverStatus: number;
  warningCount: number;
  message: string;
  protocol41: boolean;
  changedRows: number;
}
 
module.exports = class ArtikkelDao extends Dao {
  getAll(callback: (Article[]) => mixed) {
    super.query(
      //for å minimere database trafikk er det satt limit på 20. (er også satt limit på visninga i front-end, så egentlig er det unødvendig)
      "SELECT Artikler.id, Artikler.tittel, Artikler.innhold, Artikler.bildeLink, Artikler.bildeTekst, Artikler.isViktig, AVG(rating_artikler.rating) AS avgRating, DATE_FORMAT(Artikler.tidspunktOpprettet, '%Y-%m-%d %H:%i') AS opprettet, DATE_FORMAT(Artikler.tidspunktEndret, '%Y-%m-%d %H:%i') AS endret  FROM Artikler LEFT JOIN rating_artikler ON(Artikler.id = rating_artikler.id)  GROUP BY Artikler.id ORDER BY tidspunktOpprettet DESC",
      [],
      callback
    );
  }
 
  getOne(id: string, callback: Article => mixed) {
    super.query(
      "select id, kategori, tittel, innhold, bildeLink, bildeTekst, isViktig, DATE_FORMAT(tidspunktOpprettet, '%Y-%m-%d %H:%i') AS opprettet, DATE_FORMAT(tidspunktEndret, '%Y-%m-%d %H:%i') AS endret from Artikler where id=?",
      [id],
      callback
    );
  }
  getAllByCategory(kategori: string, callback: Article => mixed) {
    super.query(
      "SELECT Artikler.id, Artikler.tittel, Artikler.innhold, Artikler.bildeLink, Artikler.bildeTekst, Artikler.isViktig, AVG(rating_artikler.rating) AS avgRating, DATE_FORMAT(Artikler.tidspunktOpprettet, '%Y-%m-%d %H:%i') AS opprettet, DATE_FORMAT(Artikler.tidspunktEndret, '%Y-%m-%d %H:%i') AS endret  FROM Artikler LEFT JOIN rating_artikler ON(Artikler.id = rating_artikler.id) WHERE Artikler.kategori=? GROUP BY Artikler.id ORDER BY tidspunktOpprettet DESC",
      [kategori],
      callback
    );
  }
 
  createOne(json: Article, callback: sqlResult => mixed) {
    var val = [
      json.tittel,
      json.kategori,
      json.innhold,
      json.bildeLink,
      json.bildeTekst,
      json.isViktig
    ];
    super.query(
      "insert into Artikler (tittel, kategori, innhold, bildeLink, bildeTekst, isViktig) value (?,?,?,?,?,?)",
      val,
      callback
    );
  }
 
  deleteOne(id: string, callback: sqlResult => mixed) {
    super.query("DELETE FROM rating_artikler WHERE id=?", [id], () =>
      super.query("DELETE FROM Artikler WHERE id=?", [id], callback)
    );
  }
  putOne(json: Article, callback: sqlResult => mixed) {
    var val = [
      json.tittel,
      json.kategori,
      json.innhold,
      json.bildeLink,
      json.bildeTekst,
      json.isViktig,
      json.id
    ];
    super.query(
      "UPDATE Artikler SET tittel=?, kategori=?, innhold=?, bildeLink=?, bildeTekst=?, isViktig=? WHERE id=?",
      val,
      callback
    );
  }
};