Skip to content

Commit 2895d6f

Browse files
committed
feat: add course_key to block dictionary
1 parent d6d9d59 commit 2895d6f

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
"""
2+
add additional fields to course_block_names_dict and course_block_names
3+
"""
4+
from alembic import op
5+
6+
7+
revision = "0015"
8+
down_revision = "0014"
9+
branch_labels = None
10+
depends_on = None
11+
12+
13+
def drop_objects():
14+
# We include these drop statements here because "CREATE OR REPLACE DICTIONARY"
15+
# currently throws a file rename error and you can't drop a dictionary with a
16+
# table referring to it.
17+
op.execute(
18+
"""
19+
DROP TABLE IF EXISTS {{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names;
20+
"""
21+
)
22+
op.execute(
23+
"""
24+
DROP DICTIONARY IF EXISTS {{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names_dict;
25+
"""
26+
)
27+
28+
29+
def upgrade():
30+
drop_objects()
31+
op.execute(
32+
"""
33+
CREATE DICTIONARY {{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names_dict (
34+
location String,
35+
block_name String,
36+
course_key String
37+
)
38+
PRIMARY KEY location
39+
SOURCE(CLICKHOUSE(
40+
user '{{ CLICKHOUSE_ADMIN_USER }}'
41+
password '{{ CLICKHOUSE_ADMIN_PASSWORD }}'
42+
db '{{ ASPECTS_EVENT_SINK_DATABASE }}'
43+
query 'with most_recent_blocks as (
44+
select org, course_key, location, max(edited_on) as last_modified
45+
from {{ ASPECTS_EVENT_SINK_DATABASE }}.course_blocks
46+
group by org, course_key, location
47+
)
48+
select
49+
location,
50+
display_name,
51+
course_key
52+
from {{ ASPECTS_EVENT_SINK_DATABASE }}.course_blocks co
53+
inner join most_recent_blocks mrb on
54+
co.org = mrb.org and
55+
co.course_key = mrb.course_key and
56+
co.location = mrb.location and
57+
co.edited_on = mrb.last_modified
58+
'
59+
))
60+
LAYOUT(COMPLEX_KEY_SPARSE_HASHED())
61+
LIFETIME(120);
62+
"""
63+
)
64+
op.execute(
65+
"""
66+
CREATE OR REPLACE TABLE {{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names
67+
(
68+
location String,
69+
block_name String,
70+
course_key String
71+
) engine = Dictionary({{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names_dict)
72+
;
73+
"""
74+
)
75+
76+
77+
def downgrade():
78+
drop_objects()
79+
op.execute(
80+
"""
81+
CREATE DICTIONARY {{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names_dict (
82+
location String,
83+
block_name String
84+
)
85+
PRIMARY KEY location
86+
SOURCE(CLICKHOUSE(
87+
user '{{ CLICKHOUSE_ADMIN_USER }}'
88+
password '{{ CLICKHOUSE_ADMIN_PASSWORD }}'
89+
db '{{ ASPECTS_EVENT_SINK_DATABASE }}'
90+
query 'with most_recent_blocks as (
91+
select org, course_key, location, max(edited_on) as last_modified
92+
from {{ ASPECTS_EVENT_SINK_DATABASE }}.course_blocks
93+
group by org, course_key, location
94+
)
95+
select
96+
location,
97+
display_name
98+
from {{ ASPECTS_EVENT_SINK_DATABASE }}.course_blocks co
99+
inner join most_recent_blocks mrb on
100+
co.org = mrb.org and
101+
co.course_key = mrb.course_key and
102+
co.location = mrb.location and
103+
co.edited_on = mrb.last_modified
104+
'
105+
))
106+
LAYOUT(COMPLEX_KEY_SPARSE_HASHED())
107+
LIFETIME(120);
108+
"""
109+
)
110+
op.execute(
111+
"""
112+
CREATE OR REPLACE TABLE {{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names
113+
(
114+
location String,
115+
block_name String
116+
) engine = Dictionary({{ ASPECTS_EVENT_SINK_DATABASE }}.course_block_names_dict)
117+
;
118+
"""
119+
)

0 commit comments

Comments
 (0)