feat(library): exclude configured folders from scanning and analysis
ci / api / api (push) Successful in 56s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m23s
ci / db / db (push) Successful in 1m8s
ci / recommender / recommender (push) Failing after 40s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m25s
ci / ts / ts (packages + web) (push) Successful in 7m20s
ci / api / api (push) Successful in 56s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m23s
ci / db / db (push) Successful in 1m8s
ci / recommender / recommender (push) Failing after 40s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m25s
ci / ts / ts (packages + web) (push) Successful in 7m20s
This commit is contained in:
1 parent
0dc0384c78
commit
75ae2092ad
23 files changed
+837
-351
No files matched your search
@@ -0,0 +1,29 @@
|
||||
-- +goose Up
|
||||
ALTER TABLE library_sources ADD COLUMN excluded_dirs text[] NOT NULL DEFAULT '{}';
|
||||
|
||||
-- +goose StatementBegin
|
||||
CREATE FUNCTION library_path_excluded(rel_path text, excluded_dirs text[])
|
||||
RETURNS boolean LANGUAGE sql IMMUTABLE PARALLEL SAFE AS $$
|
||||
SELECT EXISTS (
|
||||
SELECT 1 FROM unnest(excluded_dirs) AS d(dir)
|
||||
WHERE rel_path = dir OR starts_with(rel_path, dir || '/')
|
||||
);
|
||||
$$;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- Keep historical jobs and files; only tracks whose every known file is excluded are suppressed.
|
||||
-- +goose StatementBegin
|
||||
CREATE FUNCTION library_track_scan_excluded(track uuid)
|
||||
RETURNS boolean LANGUAGE sql STABLE AS $$
|
||||
SELECT EXISTS (SELECT 1 FROM media_files WHERE track_id = track)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM media_files f JOIN library_sources s ON s.id = f.source_id
|
||||
WHERE f.track_id = track AND NOT library_path_excluded(f.rel_path, s.excluded_dirs)
|
||||
);
|
||||
$$;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
DROP FUNCTION library_track_scan_excluded(uuid);
|
||||
DROP FUNCTION library_path_excluded(text, text[]);
|
||||
ALTER TABLE library_sources DROP COLUMN excluded_dirs;
|
||||
Reference in new issue
Block a user