Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // WithGlobalUniqueID sets the universal ids options to the migration. // If this option is enabled, ent migration will allocate a 1<<32 range // for the ids of each entity (table). // Note that this option cannot be applied on tables that already exist. WithGlobalUniqueID = schema.WithGlobalUniqueID // WithDropColumn sets the drop column option to the migration. // If this option is enabled, ent migration will drop old columns // that were used for both fields and edges. This defaults to false. WithDropColumn = schema.WithDropColumn // WithDropIndex sets the drop index option to the migration. // If this option is enabled, ent migration will drop old indexes // that were defined in the schema. This defaults to false. // Note that unique constraints are defined using `UNIQUE INDEX`, // and therefore, it's recommended to enable this option to get more // flexibility in the schema changes. WithDropIndex = schema.WithDropIndex // WithForeignKeys enables creating foreign-key in schema DDL. This defaults to true. WithForeignKeys = schema.WithForeignKeys )
View Source
var ( // EventsColumns holds the columns for the "events" table. EventsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID}, {Name: "org_id", Type: field.TypeUUID}, {Name: "event_id", Type: field.TypeString, Size: 255}, {Name: "session_id", Type: field.TypeString, Size: 255}, {Name: "user_id", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "event_type", Type: field.TypeEnum, Enums: []string{"page_view", "page_leave", "ui_click", "ui_input", "ui_scroll", "ui_focus", "ui_blur", "ui_submit", "state_change", "api_request", "api_response", "journey_step", "error", "performance", "custom"}}, {Name: "event_name", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "timestamp", Type: field.TypeTime}, {Name: "sequence", Type: field.TypeInt64, Default: 0}, {Name: "page_path", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "page_title", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "page_url", Type: field.TypeString, Nullable: true, Size: 2048}, {Name: "page_referrer", Type: field.TypeString, Nullable: true, Size: 2048}, {Name: "ui_component_name", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "ui_component_path", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "ui_component_type", Type: field.TypeString, Nullable: true, Size: 100}, {Name: "ui_action", Type: field.TypeString, Nullable: true, Size: 100}, {Name: "ui_element", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "ui_element_text", Type: field.TypeString, Nullable: true, Size: 500}, {Name: "ui_viewport", Type: field.TypeString, Nullable: true, Size: 50}, {Name: "ui_scroll_position", Type: field.TypeFloat64, Nullable: true}, {Name: "ui_state_key", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "ui_state_before", Type: field.TypeString, Nullable: true, Size: 2147483647}, {Name: "ui_state_after", Type: field.TypeString, Nullable: true, Size: 2147483647}, {Name: "ui_state_change_type", Type: field.TypeString, Nullable: true, Size: 50}, {Name: "journey_step_id", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "journey_step_name", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "conversion_status", Type: field.TypeString, Nullable: true, Size: 50}, {Name: "api_method", Type: field.TypeString, Nullable: true, Size: 10}, {Name: "api_path", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "api_status_code", Type: field.TypeInt, Nullable: true}, {Name: "api_duration_ms", Type: field.TypeInt64, Nullable: true}, {Name: "error_type", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "error_message", Type: field.TypeString, Nullable: true, Size: 2147483647}, {Name: "error_stack", Type: field.TypeString, Nullable: true, Size: 2147483647}, {Name: "error_component", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "performance_lcp_ms", Type: field.TypeFloat64, Nullable: true}, {Name: "performance_fid_ms", Type: field.TypeFloat64, Nullable: true}, {Name: "performance_cls", Type: field.TypeFloat64, Nullable: true}, {Name: "performance_ttfb_ms", Type: field.TypeFloat64, Nullable: true}, {Name: "snapshot_url", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "snapshot_viewport", Type: field.TypeString, Nullable: true, Size: 50}, {Name: "duration_ms", Type: field.TypeInt64, Nullable: true}, {Name: "metadata", Type: field.TypeJSON, Nullable: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "journey_id", Type: field.TypeUUID, Nullable: true}, {Name: "project_id", Type: field.TypeUUID}, } // EventsTable holds the schema information for the "events" table. EventsTable = &schema.Table{ Name: "events", Columns: EventsColumns, PrimaryKey: []*schema.Column{EventsColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "events_journeys_events", Columns: []*schema.Column{EventsColumns[45]}, RefColumns: []*schema.Column{JourneysColumns[0]}, OnDelete: schema.SetNull, }, { Symbol: "events_projects_events", Columns: []*schema.Column{EventsColumns[46]}, RefColumns: []*schema.Column{ProjectsColumns[0]}, OnDelete: schema.NoAction, }, }, Indexes: []*schema.Index{ { Name: "event_org_id_project_id_timestamp", Unique: false, Columns: []*schema.Column{EventsColumns[1], EventsColumns[46], EventsColumns[7]}, }, { Name: "event_org_id_session_id", Unique: false, Columns: []*schema.Column{EventsColumns[1], EventsColumns[3]}, }, { Name: "event_org_id_user_id", Unique: false, Columns: []*schema.Column{EventsColumns[1], EventsColumns[4]}, }, { Name: "event_org_id_journey_id", Unique: false, Columns: []*schema.Column{EventsColumns[1], EventsColumns[45]}, }, { Name: "event_org_id_event_type_timestamp", Unique: false, Columns: []*schema.Column{EventsColumns[1], EventsColumns[5], EventsColumns[7]}, }, { Name: "event_project_id_event_id", Unique: true, Columns: []*schema.Column{EventsColumns[46], EventsColumns[2]}, }, }, } // JourneysColumns holds the columns for the "journeys" table. JourneysColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID}, {Name: "org_id", Type: field.TypeUUID}, {Name: "name", Type: field.TypeString, Size: 255}, {Name: "description", Type: field.TypeString, Nullable: true, Size: 2147483647}, {Name: "entry_conditions", Type: field.TypeJSON, Nullable: true}, {Name: "exit_conditions", Type: field.TypeJSON, Nullable: true}, {Name: "steps", Type: field.TypeJSON, Nullable: true}, {Name: "timeout_minutes", Type: field.TypeInt, Default: 30}, {Name: "total_sessions", Type: field.TypeInt64, Default: 0}, {Name: "converted_sessions", Type: field.TypeInt64, Default: 0}, {Name: "conversion_rate", Type: field.TypeFloat64, Default: 0}, {Name: "avg_duration_ms", Type: field.TypeInt64, Default: 0}, {Name: "is_active", Type: field.TypeBool, Default: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "project_id", Type: field.TypeUUID}, } // JourneysTable holds the schema information for the "journeys" table. JourneysTable = &schema.Table{ Name: "journeys", Columns: JourneysColumns, PrimaryKey: []*schema.Column{JourneysColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "journeys_projects_journeys", Columns: []*schema.Column{JourneysColumns[15]}, RefColumns: []*schema.Column{ProjectsColumns[0]}, OnDelete: schema.NoAction, }, }, Indexes: []*schema.Index{ { Name: "journey_org_id_project_id", Unique: false, Columns: []*schema.Column{JourneysColumns[1], JourneysColumns[15]}, }, { Name: "journey_org_id_is_active", Unique: false, Columns: []*schema.Column{JourneysColumns[1], JourneysColumns[12]}, }, { Name: "journey_project_id_name", Unique: true, Columns: []*schema.Column{JourneysColumns[15], JourneysColumns[2]}, }, }, } // OrganizationsColumns holds the columns for the "organizations" table. OrganizationsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID}, {Name: "name", Type: field.TypeString, Size: 255}, {Name: "slug", Type: field.TypeString, Unique: true, Size: 100}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, } // OrganizationsTable holds the schema information for the "organizations" table. OrganizationsTable = &schema.Table{ Name: "organizations", Columns: OrganizationsColumns, PrimaryKey: []*schema.Column{OrganizationsColumns[0]}, } // ProjectsColumns holds the columns for the "projects" table. ProjectsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID}, {Name: "name", Type: field.TypeString, Size: 255}, {Name: "slug", Type: field.TypeString, Size: 100}, {Name: "api_key", Type: field.TypeString, Unique: true, Size: 64}, {Name: "settings", Type: field.TypeJSON, Nullable: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "org_id", Type: field.TypeUUID}, } // ProjectsTable holds the schema information for the "projects" table. ProjectsTable = &schema.Table{ Name: "projects", Columns: ProjectsColumns, PrimaryKey: []*schema.Column{ProjectsColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "projects_organizations_projects", Columns: []*schema.Column{ProjectsColumns[7]}, RefColumns: []*schema.Column{OrganizationsColumns[0]}, OnDelete: schema.NoAction, }, }, Indexes: []*schema.Index{ { Name: "project_org_id_slug", Unique: true, Columns: []*schema.Column{ProjectsColumns[7], ProjectsColumns[2]}, }, { Name: "project_api_key", Unique: false, Columns: []*schema.Column{ProjectsColumns[3]}, }, }, } // SessionsColumns holds the columns for the "sessions" table. SessionsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID}, {Name: "org_id", Type: field.TypeUUID}, {Name: "session_id", Type: field.TypeString, Size: 255}, {Name: "user_id", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "started_at", Type: field.TypeTime}, {Name: "ended_at", Type: field.TypeTime, Nullable: true}, {Name: "duration_ms", Type: field.TypeInt64, Default: 0}, {Name: "entry_page", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "exit_page", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "page_count", Type: field.TypeInt, Default: 0}, {Name: "event_count", Type: field.TypeInt, Default: 0}, {Name: "last_journey_step_id", Type: field.TypeString, Nullable: true, Size: 255}, {Name: "conversion_status", Type: field.TypeString, Nullable: true, Size: 50}, {Name: "user_agent", Type: field.TypeString, Nullable: true, Size: 1024}, {Name: "device_type", Type: field.TypeString, Nullable: true, Size: 50}, {Name: "browser", Type: field.TypeString, Nullable: true, Size: 100}, {Name: "os", Type: field.TypeString, Nullable: true, Size: 100}, {Name: "country", Type: field.TypeString, Nullable: true, Size: 2}, {Name: "region", Type: field.TypeString, Nullable: true, Size: 100}, {Name: "city", Type: field.TypeString, Nullable: true, Size: 100}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "journey_id", Type: field.TypeUUID, Nullable: true}, {Name: "project_id", Type: field.TypeUUID}, } // SessionsTable holds the schema information for the "sessions" table. SessionsTable = &schema.Table{ Name: "sessions", Columns: SessionsColumns, PrimaryKey: []*schema.Column{SessionsColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "sessions_journeys_sessions", Columns: []*schema.Column{SessionsColumns[22]}, RefColumns: []*schema.Column{JourneysColumns[0]}, OnDelete: schema.SetNull, }, { Symbol: "sessions_projects_sessions", Columns: []*schema.Column{SessionsColumns[23]}, RefColumns: []*schema.Column{ProjectsColumns[0]}, OnDelete: schema.NoAction, }, }, Indexes: []*schema.Index{ { Name: "session_org_id_project_id_started_at", Unique: false, Columns: []*schema.Column{SessionsColumns[1], SessionsColumns[23], SessionsColumns[4]}, }, { Name: "session_org_id_session_id", Unique: false, Columns: []*schema.Column{SessionsColumns[1], SessionsColumns[2]}, }, { Name: "session_org_id_user_id", Unique: false, Columns: []*schema.Column{SessionsColumns[1], SessionsColumns[3]}, }, { Name: "session_org_id_journey_id", Unique: false, Columns: []*schema.Column{SessionsColumns[1], SessionsColumns[22]}, }, { Name: "session_org_id_conversion_status", Unique: false, Columns: []*schema.Column{SessionsColumns[1], SessionsColumns[12]}, }, { Name: "session_project_id_session_id", Unique: true, Columns: []*schema.Column{SessionsColumns[23], SessionsColumns[2]}, }, }, } // Tables holds all the tables in the schema. Tables = []*schema.Table{ EventsTable, JourneysTable, OrganizationsTable, ProjectsTable, SessionsTable, } )
Functions ¶
Types ¶
type Schema ¶
type Schema struct {
// contains filtered or unexported fields
}
Schema is the API for creating, migrating and dropping a schema.
Click to show internal directories.
Click to hide internal directories.