View Source Lightning.Projects (Lightning v2.10.4)
The Projects context.
Summary
Functions
Returns an %Ecto.Changeset{}
for tracking project changes.
Creates a project.
Deletes a project and its related data, including workflows, work orders, steps, jobs, runs, triggers, project users, project credentials, and dataclips
Deletes project dataclips in batches
Deletes project work orders in batches
Exports a project as yaml.
Gets a single project.
Gets a single project_user.
Returns the role of a user in a project. Possible roles are :admin, :viewer, :editor, and :owner
Get all project users for a given project
Gets a single project with it's members via project_users
.
Fetches projects for a given user from the database.
Lists emails of users with :owner
or :admin
roles in the project
Returns the list of projects.
Lists all projects that have history retention
Perform, when called with %{"type" => "purge_deleted"} will find projects that are ready for permanent deletion and purge them.
Builds a query to retrieve projects associated with a user.
Should input or output dataclips be saved for runs in this project?
Given a project, this function sets a scheduled deletion date based on the PURGE_DELETED_AFTER_DAYS environment variable. If no ENV is set, this date defaults to NOW but the automatic project purge cronjob will never run. (Note that subsequent logins will be blocked for projects pending deletion.)
Updates a project.
Updates a project user.
Returns an %Ecto.Changeset{}
for changing the project scheduled_deletion.
Functions
@spec add_project_users(Lightning.Projects.Project.t(), [map(), ...], boolean()) :: {:ok, [Lightning.Projects.ProjectUser.t(), ...]} | {:error, Ecto.Changeset.t()}
Returns an %Ecto.Changeset{}
for tracking project changes.
Examples
iex> change_project(project)
%Ecto.Changeset{data: %Project{}}
Creates a project.
Examples
iex> create_project(%{field: value})
{:ok, %Project{}}
iex> create_project(%{field: bad_value})
{:error, %Ecto.Changeset{}}
Deletes a project and its related data, including workflows, work orders, steps, jobs, runs, triggers, project users, project credentials, and dataclips
Examples
iex> delete_project(project)
{:ok, %Project{}}
iex> delete_project(project)
{:error, %Ecto.Changeset{}}
@spec delete_project_async(Lightning.Projects.Project.t()) :: {:ok, Oban.Job.t()}
@spec delete_project_dataclips(Lightning.Projects.Project.t(), non_neg_integer()) :: :ok
Deletes project dataclips in batches
@spec delete_project_user!(Lightning.Projects.ProjectUser.t()) :: Lightning.Projects.ProjectUser.t()
@spec delete_project_workorders(Lightning.Projects.Project.t(), non_neg_integer()) :: :ok
Deletes project work orders in batches
@spec export_project(atom(), Ecto.UUID.t(), [Ecto.UUID.t()] | nil) :: {:ok, binary()}
Exports a project as yaml.
Examples
iex> export_project(:yaml, project_id)
{:ok, string}
Gets a single project.
Raises Ecto.NoResultsError
if the Project does not exist.
Examples
iex> get_project!(123)
%Project{}
iex> get_project!(456)
** (Ecto.NoResultsError)
Gets a single project_user.
Raises Ecto.NoResultsError
if the ProjectUser does not exist.
Examples
iex> get_project_user!(123)
%ProjectUser{}
iex> get_project_user!(456)
** (Ecto.NoResultsError)
Returns the role of a user in a project. Possible roles are :admin, :viewer, :editor, and :owner
Examples
iex> get_project_user_role(user, project)
:admin
iex> get_project_user_role(user, project)
:viewer
iex> get_project_user_role(user, project)
:editor
iex> get_project_user_role(user, project)
:owner
Get all project users for a given project
Gets a single project with it's members via project_users
.
Raises Ecto.NoResultsError
if the Project does not exist.
Examples
iex> get_project!(123)
%Project{}
iex> get_project!(456)
** (Ecto.NoResultsError)
@spec get_projects_for_user(user :: Lightning.Accounts.User.t(), opts :: keyword()) :: [ Lightning.Projects.Project.t() ]
Fetches projects for a given user from the database.
Parameters
- user: The user struct for which projects are being queried.
- opts: Keyword list of options including :include for associations to preload and :order_by for sorting.
Returns
- A list of projects associated with the user.
@spec list_project_admin_emails(Ecto.UUID.t()) :: [String.t(), ...] | []
Lists emails of users with :owner
or :admin
roles in the project
@spec list_project_credentials(project :: Lightning.Projects.Project.t()) :: [ Lightning.Projects.ProjectCredential.t() ]
Returns the list of projects.
Examples
iex> list_projects()
[%Project{}, ...]
@spec list_projects_having_history_retention() :: [] | [Lightning.Projects.Project.t(), ...]
Lists all projects that have history retention
Perform, when called with %{"type" => "purge_deleted"} will find projects that are ready for permanent deletion and purge them.
@spec project_user_role_query( user :: Lightning.Accounts.User.t(), project :: Lightning.Projects.Project.t() ) :: Ecto.Queryable.t()
@spec project_users_query(atom() | %{:id => any(), optional(any()) => any()}) :: Ecto.Query.t()
@spec projects_for_user_query(user :: Lightning.Accounts.User.t(), opts :: keyword()) :: Ecto.Queryable.t()
Builds a query to retrieve projects associated with a user.
Parameters
- user: The user struct for which projects are being queried.
- opts: Keyword list of options including :include for associations to preload and :order_by for sorting.
Returns
- An Ecto queryable struct to fetch projects.
Should input or output dataclips be saved for runs in this project?
Given a project, this function sets a scheduled deletion date based on the PURGE_DELETED_AFTER_DAYS environment variable. If no ENV is set, this date defaults to NOW but the automatic project purge cronjob will never run. (Note that subsequent logins will be blocked for projects pending deletion.)
@spec select_first_project_for_user(user :: Lightning.Accounts.User.t()) :: Lightning.Projects.Project.t() | nil
Updates a project.
Examples
iex> update_project(project, %{field: new_value})
{:ok, %Project{}}
iex> update_project(project, %{field: bad_value})
{:error, %Ecto.Changeset{}}
Updates a project user.
Examples
iex> update_project_user(project_user, %{field: new_value})
{:ok, %ProjectUser{}}
iex> update_project_user(projectUser, %{field: bad_value})
{:error, %Ecto.Changeset{}}
@spec update_project_with_users(Lightning.Projects.Project.t(), map(), boolean()) :: {:ok, Lightning.Projects.Project.t()} | {:error, Ecto.Changeset.t()}
Returns an %Ecto.Changeset{}
for changing the project scheduled_deletion.
Examples
iex> validate_for_deletion(project)
%Ecto.Changeset{data: %Project{}}