mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-18 07:36:24 -07:00
Add more views
This commit is contained in:
parent
82cd5a338a
commit
018c1eef96
3 changed files with 49 additions and 30 deletions
|
@ -113,24 +113,16 @@ func getAllPostsToDelete(postIDs []any, fileOnly bool) ([]delPost, []any, error)
|
|||
setPart += "?)"
|
||||
}
|
||||
}
|
||||
query := `SELECT p.id AS postid, (
|
||||
SELECT op.id AS opid FROM DBPREFIXposts op
|
||||
WHERE op.thread_id = p.thread_id AND is_top_post LIMIT 1
|
||||
) as opid, is_top_post, COALESCE(filename, "") AS filename, dir
|
||||
FROM DBPREFIXboards b
|
||||
LEFT JOIN DBPREFIXthreads t ON t.board_id = b.id
|
||||
LEFT JOIN DBPREFIXposts p ON p.thread_id = t.id
|
||||
LEFT JOIN DBPREFIXfiles f ON f.post_id = p.id
|
||||
WHERE p.id IN ` + setPart
|
||||
var query string
|
||||
params := postIDs
|
||||
if fileOnly {
|
||||
// only deleting this post's file, not subfiles if it's an OP
|
||||
query += " AND filename IS NOT NULL"
|
||||
query = "SELECT * FROM DBPREFIXv_posts_to_delete_file_only WHERE p.id IN " + setPart
|
||||
} else {
|
||||
// deleting everything, including subfiles
|
||||
params = append(params, postIDs...)
|
||||
query += ` OR p.thread_id IN (
|
||||
SELECT thread_id from DBPREFIXposts op WHERE op.id IN ` + setPart + ` AND is_top_post)`
|
||||
query = "SELECT * FROM DBPREFIXv_posts_to_delete WHERE p.id IN " + setPart +
|
||||
` OR p.thread_id IN (SELECT thread_id from DBPREFIXposts op WHERE op.id IN ` + setPart + ` AND is_top_post)`
|
||||
}
|
||||
rows, err := gcsql.QuerySQL(query, params...)
|
||||
if err != nil {
|
||||
|
|
|
@ -32,19 +32,15 @@ type frontPagePost struct {
|
|||
|
||||
func getFrontPagePosts() ([]frontPagePost, error) {
|
||||
siteCfg := config.GetSiteConfig()
|
||||
query := `SELECT
|
||||
DBPREFIXposts.id, DBPREFIXposts.message_raw,
|
||||
(SELECT dir FROM DBPREFIXboards WHERE id = t.board_id),
|
||||
COALESCE(f.filename, ''), op.id
|
||||
FROM DBPREFIXposts
|
||||
LEFT JOIN (SELECT id, board_id FROM DBPREFIXthreads) t ON t.id = DBPREFIXposts.thread_id
|
||||
LEFT JOIN (SELECT post_id, filename FROM DBPREFIXfiles) f on f.post_id = DBPREFIXposts.id
|
||||
INNER JOIN (SELECT id, thread_id FROM DBPREFIXposts WHERE is_top_post) op ON op.thread_id = DBPREFIXposts.thread_id
|
||||
WHERE DBPREFIXposts.is_deleted = FALSE`
|
||||
if !siteCfg.RecentPostsWithNoFile {
|
||||
query += " AND f.filename IS NOT NULL AND f.filename != '' AND f.filename != 'deleted'"
|
||||
var query string
|
||||
|
||||
if siteCfg.RecentPostsWithNoFile {
|
||||
// get recent posts, including those with no file
|
||||
query = "SELECT * FROM DBPREFIXv_front_page_posts"
|
||||
} else {
|
||||
query = "SELECT * FROM DBPREFIXv_front_page_posts_with_file"
|
||||
}
|
||||
query += " ORDER BY DBPREFIXposts.id DESC LIMIT " + strconv.Itoa(siteCfg.MaxRecentPosts)
|
||||
query += " ORDER BY id DESC LIMIT " + strconv.Itoa(siteCfg.MaxRecentPosts)
|
||||
|
||||
rows, cancel, err := gcsql.QueryTimeoutSQL(nil, query)
|
||||
defer cancel()
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
-- SQL views for simplifying queries in gochan
|
||||
|
||||
-- First drop views if they exist in reverse order to avoid dependency issues
|
||||
DROP VIEW IF EXISTS DBPREFIXv_front_page_posts_with_file;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_front_page_posts;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_posts_to_delete_file_only;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_posts_to_delete;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_recent_posts;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_board_top_posts;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_building_posts;
|
||||
DROP VIEW IF EXISTS DBPREFIXv_top_posts;
|
||||
|
||||
|
||||
-- create views
|
||||
CREATE VIEW DBPREFIXv_top_posts AS
|
||||
SELECT id, thread_id FROM DBPREFIXposts WHERE is_top_post;
|
||||
|
@ -37,10 +39,39 @@ LEFT JOIN (
|
|||
INNER JOIN DBPREFIXv_top_posts p ON p.thread_id = DBPREFIXposts.thread_id
|
||||
WHERE is_deleted = FALSE;
|
||||
|
||||
CREATE VIEW DBPREFIXv_board_top_posts AS
|
||||
SELECT * FROM DBPREFIXv_building_posts
|
||||
WHERE id = parent_id AND ORDER BY t.stickied DESC, last_bump DESC
|
||||
|
||||
CREATE VIEW DBPREFIXv_recent_posts AS
|
||||
SELECT * FROM DBPREFIXv_building_posts
|
||||
ORDER BY id DESC;
|
||||
ORDER BY id DESC;
|
||||
|
||||
|
||||
CREATE VIEW DBPREFIXv_posts_to_delete AS
|
||||
SELECT p.id AS postid, (
|
||||
SELECT op.id AS opid FROM DBPREFIXposts op
|
||||
WHERE op.thread_id = p.thread_id AND is_top_post LIMIT 1
|
||||
) as opid, is_top_post, COALESCE(filename, "") AS filename, dir
|
||||
FROM DBPREFIXboards b
|
||||
LEFT JOIN DBPREFIXthreads t ON t.board_id = b.id
|
||||
LEFT JOIN DBPREFIXposts p ON p.thread_id = t.id
|
||||
LEFT JOIN DBPREFIXfiles f ON f.post_id = p.id;
|
||||
|
||||
|
||||
CREATE VIEW DBPREFIXv_posts_to_delete_file_only AS
|
||||
SELECT * FROM DBPREFIXv_posts_to_delete
|
||||
WHERE filename IS NOT NULL;
|
||||
|
||||
|
||||
CREATE VIEW DBPREFIXv_front_page_posts AS
|
||||
SELECT DBPREFIXposts.id, DBPREFIXposts.message_raw,
|
||||
(SELECT dir FROM DBPREFIXboards WHERE id = t.board_id) as dir,
|
||||
COALESCE(f.filename, '') as filename, op.id as opid
|
||||
FROM DBPREFIXposts
|
||||
LEFT JOIN (SELECT id, board_id FROM DBPREFIXthreads) t ON t.id = DBPREFIXposts.thread_id
|
||||
LEFT JOIN (SELECT post_id, filename FROM DBPREFIXfiles) f on f.post_id = DBPREFIXposts.id
|
||||
INNER JOIN (SELECT id, thread_id FROM DBPREFIXposts WHERE is_top_post) op ON op.thread_id = DBPREFIXposts.thread_id
|
||||
WHERE DBPREFIXposts.is_deleted = FALSE;
|
||||
|
||||
|
||||
CREATE VIEW DBPREFIXv_front_page_posts_with_file AS
|
||||
SELECT * FROM DBPREFIXv_front_page_posts
|
||||
WHERE filename IS NOT NULL AND filename != '' AND filename != 'deleted';
|
Loading…
Add table
Add a link
Reference in a new issue