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 ); } }; |