github.com/ngocphuongnb/tetua@v0.0.7-alpha/packages/entrepository/ent/migrate/schema.go (about)

     1  // Code generated by entc, DO NOT EDIT.
     2  
     3  package migrate
     4  
     5  import (
     6  	"entgo.io/ent/dialect/entsql"
     7  	"entgo.io/ent/dialect/sql/schema"
     8  	"entgo.io/ent/schema/field"
     9  )
    10  
    11  var (
    12  	// CommentsColumns holds the columns for the "comments" table.
    13  	CommentsColumns = []*schema.Column{
    14  		{Name: "id", Type: field.TypeInt, Increment: true},
    15  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
    16  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
    17  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
    18  		{Name: "content", Type: field.TypeString, Size: 2147483647},
    19  		{Name: "content_html", Type: field.TypeString, Size: 2147483647},
    20  		{Name: "votes", Type: field.TypeInt64, Default: 0},
    21  		{Name: "parent_id", Type: field.TypeInt, Nullable: true},
    22  		{Name: "post_id", Type: field.TypeInt, Nullable: true},
    23  		{Name: "user_id", Type: field.TypeInt, Nullable: true},
    24  	}
    25  	// CommentsTable holds the schema information for the "comments" table.
    26  	CommentsTable = &schema.Table{
    27  		Name:       "comments",
    28  		Columns:    CommentsColumns,
    29  		PrimaryKey: []*schema.Column{CommentsColumns[0]},
    30  		ForeignKeys: []*schema.ForeignKey{
    31  			{
    32  				Symbol:     "comment_parent",
    33  				Columns:    []*schema.Column{CommentsColumns[7]},
    34  				RefColumns: []*schema.Column{CommentsColumns[0]},
    35  				OnDelete:   schema.SetNull,
    36  			},
    37  			{
    38  				Symbol:     "comment_post",
    39  				Columns:    []*schema.Column{CommentsColumns[8]},
    40  				RefColumns: []*schema.Column{PostsColumns[0]},
    41  				OnDelete:   schema.SetNull,
    42  			},
    43  			{
    44  				Symbol:     "comment_user",
    45  				Columns:    []*schema.Column{CommentsColumns[9]},
    46  				RefColumns: []*schema.Column{UsersColumns[0]},
    47  				OnDelete:   schema.SetNull,
    48  			},
    49  		},
    50  	}
    51  	// FilesColumns holds the columns for the "files" table.
    52  	FilesColumns = []*schema.Column{
    53  		{Name: "id", Type: field.TypeInt, Increment: true},
    54  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
    55  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
    56  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
    57  		{Name: "disk", Type: field.TypeString},
    58  		{Name: "path", Type: field.TypeString, SchemaType: map[string]string{"mysql": "varchar(500)"}},
    59  		{Name: "type", Type: field.TypeString},
    60  		{Name: "size", Type: field.TypeInt},
    61  		{Name: "user_id", Type: field.TypeInt, Nullable: true},
    62  	}
    63  	// FilesTable holds the schema information for the "files" table.
    64  	FilesTable = &schema.Table{
    65  		Name:       "files",
    66  		Columns:    FilesColumns,
    67  		PrimaryKey: []*schema.Column{FilesColumns[0]},
    68  		ForeignKeys: []*schema.ForeignKey{
    69  			{
    70  				Symbol:     "file_user",
    71  				Columns:    []*schema.Column{FilesColumns[8]},
    72  				RefColumns: []*schema.Column{UsersColumns[0]},
    73  				OnDelete:   schema.SetNull,
    74  			},
    75  		},
    76  		Indexes: []*schema.Index{
    77  			{
    78  				Name:    "path_idx",
    79  				Unique:  false,
    80  				Columns: []*schema.Column{FilesColumns[5]},
    81  			},
    82  		},
    83  	}
    84  	// PagesColumns holds the columns for the "pages" table.
    85  	PagesColumns = []*schema.Column{
    86  		{Name: "id", Type: field.TypeInt, Increment: true},
    87  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
    88  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
    89  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
    90  		{Name: "name", Type: field.TypeString},
    91  		{Name: "slug", Type: field.TypeString},
    92  		{Name: "content", Type: field.TypeString, Size: 2147483647},
    93  		{Name: "content_html", Type: field.TypeString, Size: 2147483647},
    94  		{Name: "draft", Type: field.TypeBool, Nullable: true, Default: false},
    95  		{Name: "featured_image_id", Type: field.TypeInt, Nullable: true},
    96  	}
    97  	// PagesTable holds the schema information for the "pages" table.
    98  	PagesTable = &schema.Table{
    99  		Name:       "pages",
   100  		Columns:    PagesColumns,
   101  		PrimaryKey: []*schema.Column{PagesColumns[0]},
   102  		ForeignKeys: []*schema.ForeignKey{
   103  			{
   104  				Symbol:     "page_featured_image",
   105  				Columns:    []*schema.Column{PagesColumns[9]},
   106  				RefColumns: []*schema.Column{FilesColumns[0]},
   107  				OnDelete:   schema.SetNull,
   108  			},
   109  		},
   110  		Indexes: []*schema.Index{
   111  			{
   112  				Name:    "name_idx",
   113  				Unique:  false,
   114  				Columns: []*schema.Column{PagesColumns[4]},
   115  			},
   116  			{
   117  				Name:    "slug_unique",
   118  				Unique:  true,
   119  				Columns: []*schema.Column{PagesColumns[5]},
   120  			},
   121  		},
   122  	}
   123  	// PermissionsColumns holds the columns for the "permissions" table.
   124  	PermissionsColumns = []*schema.Column{
   125  		{Name: "id", Type: field.TypeInt, Increment: true},
   126  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   127  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   128  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
   129  		{Name: "action", Type: field.TypeString},
   130  		{Name: "value", Type: field.TypeString},
   131  		{Name: "role_id", Type: field.TypeInt},
   132  	}
   133  	// PermissionsTable holds the schema information for the "permissions" table.
   134  	PermissionsTable = &schema.Table{
   135  		Name:       "permissions",
   136  		Columns:    PermissionsColumns,
   137  		PrimaryKey: []*schema.Column{PermissionsColumns[0]},
   138  		ForeignKeys: []*schema.ForeignKey{
   139  			{
   140  				Symbol:     "permission_role",
   141  				Columns:    []*schema.Column{PermissionsColumns[6]},
   142  				RefColumns: []*schema.Column{RolesColumns[0]},
   143  				OnDelete:   schema.Cascade,
   144  			},
   145  		},
   146  		Indexes: []*schema.Index{
   147  			{
   148  				Name:    "role_action_unique_idx",
   149  				Unique:  true,
   150  				Columns: []*schema.Column{PermissionsColumns[6], PermissionsColumns[4]},
   151  			},
   152  		},
   153  	}
   154  	// PostsColumns holds the columns for the "posts" table.
   155  	PostsColumns = []*schema.Column{
   156  		{Name: "id", Type: field.TypeInt, Increment: true},
   157  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   158  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   159  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
   160  		{Name: "name", Type: field.TypeString},
   161  		{Name: "slug", Type: field.TypeString},
   162  		{Name: "description", Type: field.TypeString, Nullable: true},
   163  		{Name: "content", Type: field.TypeString, Size: 2147483647},
   164  		{Name: "content_html", Type: field.TypeString, Size: 2147483647},
   165  		{Name: "view_count", Type: field.TypeInt64, Default: 0},
   166  		{Name: "comment_count", Type: field.TypeInt64, Default: 0},
   167  		{Name: "rating_count", Type: field.TypeInt64, Nullable: true, Default: 0},
   168  		{Name: "rating_total", Type: field.TypeInt64, Nullable: true, Default: 0},
   169  		{Name: "draft", Type: field.TypeBool, Nullable: true, Default: false},
   170  		{Name: "approved", Type: field.TypeBool, Nullable: true, Default: false},
   171  		{Name: "featured_image_id", Type: field.TypeInt, Nullable: true},
   172  		{Name: "user_id", Type: field.TypeInt, Nullable: true},
   173  	}
   174  	// PostsTable holds the schema information for the "posts" table.
   175  	PostsTable = &schema.Table{
   176  		Name:       "posts",
   177  		Columns:    PostsColumns,
   178  		PrimaryKey: []*schema.Column{PostsColumns[0]},
   179  		ForeignKeys: []*schema.ForeignKey{
   180  			{
   181  				Symbol:     "post_featured_image",
   182  				Columns:    []*schema.Column{PostsColumns[15]},
   183  				RefColumns: []*schema.Column{FilesColumns[0]},
   184  				OnDelete:   schema.SetNull,
   185  			},
   186  			{
   187  				Symbol:     "post_user",
   188  				Columns:    []*schema.Column{PostsColumns[16]},
   189  				RefColumns: []*schema.Column{UsersColumns[0]},
   190  				OnDelete:   schema.SetNull,
   191  			},
   192  		},
   193  		Indexes: []*schema.Index{
   194  			{
   195  				Name:    "name_idx",
   196  				Unique:  false,
   197  				Columns: []*schema.Column{PostsColumns[4]},
   198  			},
   199  			{
   200  				Name:    "view_count_idx",
   201  				Unique:  false,
   202  				Columns: []*schema.Column{PostsColumns[9]},
   203  			},
   204  		},
   205  	}
   206  	// RolesColumns holds the columns for the "roles" table.
   207  	RolesColumns = []*schema.Column{
   208  		{Name: "id", Type: field.TypeInt, Increment: true},
   209  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   210  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   211  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
   212  		{Name: "name", Type: field.TypeString, Unique: true},
   213  		{Name: "description", Type: field.TypeString, Nullable: true},
   214  		{Name: "root", Type: field.TypeBool, Nullable: true},
   215  	}
   216  	// RolesTable holds the schema information for the "roles" table.
   217  	RolesTable = &schema.Table{
   218  		Name:       "roles",
   219  		Columns:    RolesColumns,
   220  		PrimaryKey: []*schema.Column{RolesColumns[0]},
   221  	}
   222  	// SettingsColumns holds the columns for the "settings" table.
   223  	SettingsColumns = []*schema.Column{
   224  		{Name: "id", Type: field.TypeInt, Increment: true},
   225  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   226  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   227  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
   228  		{Name: "name", Type: field.TypeString},
   229  		{Name: "value", Type: field.TypeString, Nullable: true, Size: 2147483647},
   230  		{Name: "type", Type: field.TypeString, Nullable: true, Default: "input"},
   231  	}
   232  	// SettingsTable holds the schema information for the "settings" table.
   233  	SettingsTable = &schema.Table{
   234  		Name:       "settings",
   235  		Columns:    SettingsColumns,
   236  		PrimaryKey: []*schema.Column{SettingsColumns[0]},
   237  		Indexes: []*schema.Index{
   238  			{
   239  				Name:    "setting_name",
   240  				Unique:  true,
   241  				Columns: []*schema.Column{SettingsColumns[4]},
   242  			},
   243  		},
   244  	}
   245  	// TopicsColumns holds the columns for the "topics" table.
   246  	TopicsColumns = []*schema.Column{
   247  		{Name: "id", Type: field.TypeInt, Increment: true},
   248  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   249  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   250  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
   251  		{Name: "name", Type: field.TypeString, Unique: true},
   252  		{Name: "slug", Type: field.TypeString, Unique: true},
   253  		{Name: "description", Type: field.TypeString, Nullable: true},
   254  		{Name: "content", Type: field.TypeString, Size: 2147483647},
   255  		{Name: "content_html", Type: field.TypeString, Size: 2147483647},
   256  		{Name: "parent_id", Type: field.TypeInt, Nullable: true},
   257  	}
   258  	// TopicsTable holds the schema information for the "topics" table.
   259  	TopicsTable = &schema.Table{
   260  		Name:       "topics",
   261  		Columns:    TopicsColumns,
   262  		PrimaryKey: []*schema.Column{TopicsColumns[0]},
   263  		ForeignKeys: []*schema.ForeignKey{
   264  			{
   265  				Symbol:     "topic_parent",
   266  				Columns:    []*schema.Column{TopicsColumns[9]},
   267  				RefColumns: []*schema.Column{TopicsColumns[0]},
   268  				OnDelete:   schema.SetNull,
   269  			},
   270  		},
   271  	}
   272  	// UsersColumns holds the columns for the "users" table.
   273  	UsersColumns = []*schema.Column{
   274  		{Name: "id", Type: field.TypeInt, Increment: true},
   275  		{Name: "created_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   276  		{Name: "updated_at", Type: field.TypeTime, SchemaType: map[string]string{"mysql": "datetime"}},
   277  		{Name: "deleted_at", Type: field.TypeTime, Nullable: true, SchemaType: map[string]string{"mysql": "datetime"}},
   278  		{Name: "username", Type: field.TypeString, Unique: true},
   279  		{Name: "display_name", Type: field.TypeString, Nullable: true},
   280  		{Name: "url", Type: field.TypeString, Nullable: true},
   281  		{Name: "provider", Type: field.TypeString, Nullable: true},
   282  		{Name: "provider_id", Type: field.TypeString, Nullable: true},
   283  		{Name: "provider_username", Type: field.TypeString, Nullable: true},
   284  		{Name: "provider_avatar", Type: field.TypeString, Nullable: true},
   285  		{Name: "email", Type: field.TypeString, Nullable: true},
   286  		{Name: "password", Type: field.TypeString, Nullable: true},
   287  		{Name: "bio", Type: field.TypeString, Nullable: true, Size: 2147483647},
   288  		{Name: "bio_html", Type: field.TypeString, Nullable: true, Size: 2147483647},
   289  		{Name: "active", Type: field.TypeBool, Default: true},
   290  		{Name: "avatar_image_id", Type: field.TypeInt, Nullable: true},
   291  	}
   292  	// UsersTable holds the schema information for the "users" table.
   293  	UsersTable = &schema.Table{
   294  		Name:       "users",
   295  		Columns:    UsersColumns,
   296  		PrimaryKey: []*schema.Column{UsersColumns[0]},
   297  		ForeignKeys: []*schema.ForeignKey{
   298  			{
   299  				Symbol:     "user_avatar_image",
   300  				Columns:    []*schema.Column{UsersColumns[16]},
   301  				RefColumns: []*schema.Column{FilesColumns[0]},
   302  				OnDelete:   schema.SetNull,
   303  			},
   304  		},
   305  		Indexes: []*schema.Index{
   306  			{
   307  				Name:    "provider_provider_id_unique",
   308  				Unique:  true,
   309  				Columns: []*schema.Column{UsersColumns[7], UsersColumns[8]},
   310  			},
   311  		},
   312  	}
   313  	// RoleUsersColumns holds the columns for the "role_users" table.
   314  	RoleUsersColumns = []*schema.Column{
   315  		{Name: "role_id", Type: field.TypeInt},
   316  		{Name: "user_id", Type: field.TypeInt},
   317  	}
   318  	// RoleUsersTable holds the schema information for the "role_users" table.
   319  	RoleUsersTable = &schema.Table{
   320  		Name:       "role_users",
   321  		Columns:    RoleUsersColumns,
   322  		PrimaryKey: []*schema.Column{RoleUsersColumns[0], RoleUsersColumns[1]},
   323  		ForeignKeys: []*schema.ForeignKey{
   324  			{
   325  				Symbol:     "role_users_role_id",
   326  				Columns:    []*schema.Column{RoleUsersColumns[0]},
   327  				RefColumns: []*schema.Column{RolesColumns[0]},
   328  				OnDelete:   schema.Cascade,
   329  			},
   330  			{
   331  				Symbol:     "role_users_user_id",
   332  				Columns:    []*schema.Column{RoleUsersColumns[1]},
   333  				RefColumns: []*schema.Column{UsersColumns[0]},
   334  				OnDelete:   schema.Cascade,
   335  			},
   336  		},
   337  	}
   338  	// TopicPostsColumns holds the columns for the "topic_posts" table.
   339  	TopicPostsColumns = []*schema.Column{
   340  		{Name: "topic_id", Type: field.TypeInt},
   341  		{Name: "post_id", Type: field.TypeInt},
   342  	}
   343  	// TopicPostsTable holds the schema information for the "topic_posts" table.
   344  	TopicPostsTable = &schema.Table{
   345  		Name:       "topic_posts",
   346  		Columns:    TopicPostsColumns,
   347  		PrimaryKey: []*schema.Column{TopicPostsColumns[0], TopicPostsColumns[1]},
   348  		ForeignKeys: []*schema.ForeignKey{
   349  			{
   350  				Symbol:     "topic_posts_topic_id",
   351  				Columns:    []*schema.Column{TopicPostsColumns[0]},
   352  				RefColumns: []*schema.Column{TopicsColumns[0]},
   353  				OnDelete:   schema.Cascade,
   354  			},
   355  			{
   356  				Symbol:     "topic_posts_post_id",
   357  				Columns:    []*schema.Column{TopicPostsColumns[1]},
   358  				RefColumns: []*schema.Column{PostsColumns[0]},
   359  				OnDelete:   schema.Cascade,
   360  			},
   361  		},
   362  	}
   363  	// Tables holds all the tables in the schema.
   364  	Tables = []*schema.Table{
   365  		CommentsTable,
   366  		FilesTable,
   367  		PagesTable,
   368  		PermissionsTable,
   369  		PostsTable,
   370  		RolesTable,
   371  		SettingsTable,
   372  		TopicsTable,
   373  		UsersTable,
   374  		RoleUsersTable,
   375  		TopicPostsTable,
   376  	}
   377  )
   378  
   379  func init() {
   380  	CommentsTable.ForeignKeys[0].RefTable = CommentsTable
   381  	CommentsTable.ForeignKeys[1].RefTable = PostsTable
   382  	CommentsTable.ForeignKeys[2].RefTable = UsersTable
   383  	CommentsTable.Annotation = &entsql.Annotation{
   384  		Charset:   "utf8mb4",
   385  		Collation: "utf8mb4_unicode_ci",
   386  	}
   387  	FilesTable.ForeignKeys[0].RefTable = UsersTable
   388  	FilesTable.Annotation = &entsql.Annotation{
   389  		Charset:   "utf8mb4",
   390  		Collation: "utf8mb4_unicode_ci",
   391  	}
   392  	PagesTable.ForeignKeys[0].RefTable = FilesTable
   393  	PagesTable.Annotation = &entsql.Annotation{
   394  		Charset:   "utf8mb4",
   395  		Collation: "utf8mb4_unicode_ci",
   396  	}
   397  	PermissionsTable.ForeignKeys[0].RefTable = RolesTable
   398  	PermissionsTable.Annotation = &entsql.Annotation{
   399  		Charset:   "utf8mb4",
   400  		Collation: "utf8mb4_unicode_ci",
   401  	}
   402  	PostsTable.ForeignKeys[0].RefTable = FilesTable
   403  	PostsTable.ForeignKeys[1].RefTable = UsersTable
   404  	PostsTable.Annotation = &entsql.Annotation{
   405  		Charset:   "utf8mb4",
   406  		Collation: "utf8mb4_unicode_ci",
   407  	}
   408  	RolesTable.Annotation = &entsql.Annotation{
   409  		Charset:   "utf8mb4",
   410  		Collation: "utf8mb4_unicode_ci",
   411  	}
   412  	SettingsTable.Annotation = &entsql.Annotation{
   413  		Charset:   "utf8mb4",
   414  		Collation: "utf8mb4_unicode_ci",
   415  	}
   416  	TopicsTable.ForeignKeys[0].RefTable = TopicsTable
   417  	TopicsTable.Annotation = &entsql.Annotation{
   418  		Charset:   "utf8mb4",
   419  		Collation: "utf8mb4_unicode_ci",
   420  	}
   421  	UsersTable.ForeignKeys[0].RefTable = FilesTable
   422  	UsersTable.Annotation = &entsql.Annotation{
   423  		Charset:   "utf8mb4",
   424  		Collation: "utf8mb4_unicode_ci",
   425  	}
   426  	RoleUsersTable.ForeignKeys[0].RefTable = RolesTable
   427  	RoleUsersTable.ForeignKeys[1].RefTable = UsersTable
   428  	TopicPostsTable.ForeignKeys[0].RefTable = TopicsTable
   429  	TopicPostsTable.ForeignKeys[1].RefTable = PostsTable
   430  }