View Source Zoonk.Content (Zoonk v0.2.0-alpha)

Content context.

Link to this section Summary

Functions

Returns an %Ecto.Changeset{} for tracking course changes.

Deletes a course.

Deletes a course user.

Gets a single course based on the given slug and school ID.

Gets the number of students from a course.

Get a user from a course given their ID.

List all users for a course according to their role.

Returns all courses for a given school.

List all courses given a user and a role.

Returns all public courses for a given school.

Link to this section Types

@type course_changeset() ::
  {:ok, Zoonk.Content.Course.t()} | {:error, Ecto.Changeset.t()}
Link to this type

course_user_changeset()

View Source
@type course_user_changeset() ::
  {:ok, Zoonk.Content.CourseUser.t()} | {:error, Ecto.Changeset.t()}

Link to this section Functions

Link to this function

approve_course_user(course_user_id, approved_by_id)

View Source
@spec approve_course_user(non_neg_integer(), non_neg_integer()) ::
  course_user_changeset()

Approves a course user.

examples

Examples

iex> approve_course_user(school_user_id, approved_by_id)
{:ok, %CourseUser{}}

iex> approve_course_user(school_user_id, approved_by_id)
{:error, %Ecto.Changeset{}}
Link to this function

change_course(course, attrs \\ %{})

View Source
@spec change_course(Zoonk.Content.Course.t(), map()) :: Ecto.Changeset.t()

Returns an %Ecto.Changeset{} for tracking course changes.

examples

Examples

iex> change_course(%Course{})
%Ecto.Changeset{data: %Course{}}
Link to this function

create_course(attrs \\ %{}, user)

View Source
@spec create_course(map(), Zoonk.Accounts.User.t()) :: course_changeset()

Creates a course.

examples

Examples

iex> create_course(%{field: value}, %User{})
{:ok, %Course{}}

iex> create_course(%{field: bad_value}, %User{})
{:error, %Ecto.Changeset{}}
Link to this function

create_course_user(course, user, attrs \\ %{})

View Source

Adds a user to a course.

examples

Examples

iex> create_course_user(%Course{}, %User{}, %{role: :student})
{:ok, %CourseUser{}}

iex> create_course_user(%Course{}, %User{}, %{role: :invalid})
{:error, %Ecto.Changeset{}}
@spec delete_course(Zoonk.Content.Course.t()) :: course_changeset()

Deletes a course.

examples

Examples

iex> delete_course(%Course{})
{:ok, %Course{}}

iex> delete_course(%Course{})
{:error, %Ecto.Changeset{}}
Link to this function

delete_course_user(course_user_id)

View Source
@spec delete_course_user(non_neg_integer()) :: course_user_changeset()

Deletes a course user.

examples

Examples

iex> delete_course_user(course_user_id)
{:ok, %CourseUser{}}

iex> delete_course_user(course_user_id)
{:error, %Ecto.Changeset{}}
Link to this function

get_course_by_slug!(slug, school_id)

View Source
@spec get_course_by_slug!(String.t(), non_neg_integer()) :: Zoonk.Content.Course.t()

Gets a single course based on the given slug and school ID.

examples

Examples

iex> get_course_by_slug!("slug", 123)
%Course{}

iex> get_course_by_slug!("bad-slug", 123)
** (Ecto.NoResultsError)
Link to this function

get_course_students_count(course)

View Source
@spec get_course_students_count(Zoonk.Content.Course.t()) :: non_neg_integer()

Gets the number of students from a course.

examples

Examples

iex> get_course_students_count(%Course{})
1
Link to this function

get_course_user_by_id(course_id, user_id, opts \\ [])

View Source
@spec get_course_user_by_id(non_neg_integer(), non_neg_integer(), list()) ::
  Zoonk.Content.CourseUser.t() | nil

Get a user from a course given their ID.

examples

Examples

iex> get_course_user_by_id(1, 1)
%CourseUser{}

iex> get_course_user_by_id(0, 0)
** nil
Link to this function

list_course_users_by_role(course, role)

View Source
@spec list_course_users_by_role(Zoonk.Content.Course.t(), atom()) :: [
  Zoonk.Content.CourseUser.t()
]

List all users for a course according to their role.

examples

Examples

iex> list_course_users_by_role(%Course{}, :teacher)
[%CourseUser{}, ...]

iex> list_course_users_by_role(%Course{}, :student)
[%CourseUser{}, ...]
Link to this function

list_courses_by_school(school)

View Source
@spec list_courses_by_school(Zoonk.Organizations.School.t()) :: [
  Zoonk.Content.Course.t()
]

Returns all courses for a given school.

This is intended to be used for the management panel. It's ideal for managers and teachers. If you want only published courses, use list_public_courses_by_school/2 instead.

examples

Examples

iex> list_courses_by_school(%School{})
[%Course{}, ...]
Link to this function

list_courses_by_user(school, user, role, opts \\ [])

View Source

List all courses given a user and a role.

examples

Examples

iex> list_courses_by_user(%School{}, %User{}, :teacher)
[%Course{}, ...]

iex> list_courses_by_user(%School{}, %User{}, :student, limit: 5)
[%Course{}, ...]
Link to this function

list_public_courses_by_school(school, opts \\ [])

View Source
@spec list_public_courses_by_school(Zoonk.Organizations.School.t(), list()) :: [
  Zoonk.Content.CourseData.t()
]

Returns all public courses for a given school.

This is intended to be used for the public API. It's ideal for students and parents. If you want all courses, use list_courses_by_school/1 instead.

examples

Examples

iex> list_public_courses_by_school(%School{})
[%CourseData{}, ...]
Link to this function

update_course(course, attrs \\ %{})

View Source
@spec update_course(Zoonk.Content.Course.t(), map()) :: course_changeset()

Updates a course.

examples

Examples

iex> update_course(%Course{}, %{field: value})
{:ok, %Course{}}

iex> update_course(%Course{}, %{field: bad_value})
{:error, %Ecto.Changeset{}}
Link to this function

update_course_user(course_user, attrs)

View Source
@spec update_course_user(Zoonk.Content.CourseUser.t(), map()) ::
  course_user_changeset()

Updates a course user.

examples

Examples

iex> update_course_user(%CourseUser{}, %{role: :student})
{:ok, %CourseUser{}}

iex> update_course_user(%CourseUser{}, %{role: :invalid})
{:error, %Ecto.Changeset{}}