Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const { PostgreSQL } = require('mql2');
- const { CONNECT } = PostgreSQL;
- const POOL = await CONNECT({
- host: 'localhost',
- user: 'username',
- password: '1234',
- database: 'dbname'
- });
- const { QUERY } = POOL;
- const id = 10;
- const posts = await QUERY `SELECT * FROM posts WHERE id = ${id}`;
- // [{ id: 10, ... }]
- ASSOCIATE `
- posts
- - user
- < comments
- - user
- p < likes
- - user
- p < likes
- - user
- x tags
- `;
- ASSOCIATE `
- posts ${SQL `WHERE is_hidden = false ORDER BY id DESC LIMIT ${10}`}
- - user
- < comments ${{
- column: COLUMN('body', 'updated_at')
- }}
- - user
- p < likes
- - user
- p < likes
- - user
- x tags
- const posts = await ASSOCIATE `
- posts ${{
- table: 'articles'
- }}
- - user ${{
- left_key: 'writer_id',
- key: 'member_id',
- table: 'members'
- }}
- < comments ${{
- key: 'article_id'
- }}
- - user ${{
- left_key: 'writer_id',
- key: 'member_id',
- table: 'members'
- }}
- p < likes ${{
- poly_type: { parent_name: 'comments' },
- key: 'parent_id'
- }}
- p < likes ${{
- poly_type: { parent_name: 'articles' },
- key: 'parent_id'
- }}
- x tags ${{
- left_key: 'id',
- left_xkey: 'article_id',
- xtable: 'tags_articles',
- xkey: 'tag_name',
- key: 'name'
- }}
- `;
- const users = await ASSOCIATE `
- users ${{hook: users => users.map(u =>
- Object.assign({}, u, { _popular: !!u._.posts.find(p => p._is_best) })
- )}}
- < posts ${{hook: posts => posts.map(
- p => Object.assign({}, p, { _is_best: p._.comments.length > 1 }))}}
- - user
- < comments
- - user
- `;
- users[0]._popular; // true
- users[0]._.posts[0]._is_best; // true
- users[0]._.posts[1]._is_best; // false
Add Comment
Please, Sign In to add comment