Coverage for mindsdb / migrations / versions / 2025-05-28_a44643042fe8_added_data_catalog_tables.py: 75%

20 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-01-21 00:36 +0000

1"""added data catalog tables 

2 

3Revision ID: a44643042fe8 

4Revises: 9f150e4f9a05 

5Create Date: 2025-05-28 17:20:57.300313 

6 

7""" 

8 

9from alembic import op 

10import sqlalchemy as sa 

11import mindsdb.interfaces.storage.db # noqa 

12from mindsdb.interfaces.storage.db import Array 

13 

14 

15# revision identifiers, used by Alembic. 

16revision = "a44643042fe8" 

17down_revision = "9f150e4f9a05" 

18branch_labels = None 

19depends_on = None 

20 

21 

22def upgrade(): 

23 op.create_table( 

24 "meta_tables", 

25 sa.Column("id", sa.Integer(), primary_key=True), 

26 sa.Column( 

27 "integration_id", 

28 sa.Integer(), 

29 sa.ForeignKey("integration.id"), 

30 nullable=False, 

31 ), 

32 sa.Column("name", sa.String(), nullable=False), 

33 sa.Column("schema", sa.String(), nullable=True), 

34 sa.Column("description", sa.String(), nullable=True), 

35 sa.Column("type", sa.String(), nullable=True), 

36 sa.Column("row_count", sa.Integer(), nullable=True), 

37 ) 

38 

39 op.create_table( 

40 "meta_columns", 

41 sa.Column("id", sa.Integer(), primary_key=True), 

42 sa.Column("table_id", sa.Integer(), sa.ForeignKey("meta_tables.id"), nullable=False), 

43 sa.Column("name", sa.String(), nullable=False), 

44 sa.Column("data_type", sa.String(), nullable=False), 

45 sa.Column("default_value", sa.String(), nullable=True), 

46 sa.Column("description", sa.String(), nullable=True), 

47 sa.Column("is_nullable", sa.Boolean(), nullable=True), 

48 ) 

49 

50 op.create_table( 

51 "meta_column_statistics", 

52 sa.Column( 

53 "column_id", 

54 sa.Integer(), 

55 sa.ForeignKey("meta_columns.id"), 

56 primary_key=True, 

57 ), 

58 sa.Column("most_common_values", Array(), nullable=True), 

59 sa.Column("most_common_frequencies", Array(), nullable=True), 

60 sa.Column("null_percentage", sa.Numeric(5, 2), nullable=True), 

61 sa.Column("distinct_values_count", sa.Integer(), nullable=True), 

62 sa.Column("minimum_value", sa.String(), nullable=True), 

63 sa.Column("maximum_value", sa.String(), nullable=True), 

64 ) 

65 

66 op.create_table( 

67 "meta_primary_keys", 

68 sa.Column("table_id", sa.Integer(), sa.ForeignKey("meta_tables.id"), primary_key=True), 

69 sa.Column( 

70 "column_id", 

71 sa.Integer(), 

72 sa.ForeignKey("meta_columns.id"), 

73 primary_key=True, 

74 ), 

75 sa.Column("ordinal_position", sa.Integer(), nullable=True), 

76 sa.Column("constraint_name", sa.String(), nullable=True), 

77 ) 

78 

79 op.create_table( 

80 "meta_foreign_keys", 

81 sa.Column( 

82 "parent_table_id", 

83 sa.Integer(), 

84 sa.ForeignKey("meta_tables.id"), 

85 primary_key=True, 

86 ), 

87 sa.Column( 

88 "parent_column_id", 

89 sa.Integer(), 

90 sa.ForeignKey("meta_columns.id"), 

91 primary_key=True, 

92 ), 

93 sa.Column( 

94 "child_table_id", 

95 sa.Integer(), 

96 sa.ForeignKey("meta_tables.id"), 

97 primary_key=True, 

98 ), 

99 sa.Column( 

100 "child_column_id", 

101 sa.Integer(), 

102 sa.ForeignKey("meta_columns.id"), 

103 primary_key=True, 

104 ), 

105 sa.Column("constraint_name", sa.String(), nullable=True), 

106 ) 

107 

108 

109def downgrade(): 

110 op.drop_table("meta_tables") 

111 

112 op.drop_table("meta_columns") 

113 

114 op.drop_table("meta_column_statistics") 

115 

116 op.drop_table("meta_primary_keys") 

117 

118 op.drop_table("meta_foreign_keys")