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

Content context.

Link to this section Summary

Functions

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

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

Returns an %Ecto.Changeset{} for tracking lesson step changes.

Returns an %Ecto.Changeset{} for tracking step option changes.

Creates a new lesson.

Creates a new lesson step.

Creates a new step option.

Deletes a course.

Deletes a course user.

Deletes a lesson.

Deletes a lesson step.

Deletes a step option.

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.

Get a lesson.

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.

List lesson steps.

List course lessons.

Returns all public courses for a given school.

Updates a lesson.

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()}
@type lesson_changeset() ::
  {:ok, Zoonk.Content.Lesson.t()} | {:error, Ecto.Changeset.t()}
Link to this type

lesson_step_changeset()

View Source
@type lesson_step_changeset() ::
  {:ok, Zoonk.Content.LessonStep.t()} | {:error, Ecto.Changeset.t()}
Link to this type

step_option_changeset()

View Source
@type step_option_changeset() ::
  {:ok, Zoonk.Content.StepOption.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

change_lesson(lesson, attrs \\ %{})

View Source
@spec change_lesson(Zoonk.Content.Lesson.t(), map()) :: Ecto.Changeset.t()

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

examples

Examples

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

change_lesson_step(lesson_step, attrs \\ %{})

View Source
@spec change_lesson_step(Zoonk.Content.LessonStep.t(), map()) :: Ecto.Changeset.t()

Returns an %Ecto.Changeset{} for tracking lesson step changes.

examples

Examples

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

change_step_option(step_option, attrs \\ %{})

View Source
@spec change_step_option(Zoonk.Content.StepOption.t(), map()) :: Ecto.Changeset.t()

Returns an %Ecto.Changeset{} for tracking step option changes.

examples

Examples

iex> change_step_option(%StepOption{})
%Ecto.Changeset{data: %StepOption{}}
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 create_lesson(map()) :: lesson_changeset()

Creates a new lesson.

examples

Examples

iex> create_lesson(%{title: "Lesson 1"})
{:ok, %Lesson{}}

iex> create_lesson(%{title: "Lesson 1"})
{:error, %Ecto.Changeset{}}
Link to this function

create_lesson_step(attrs)

View Source
@spec create_lesson_step(map()) :: lesson_step_changeset()

Creates a new lesson step.

examples

Examples

iex> create_lesson_step(%{content: "Lesson Step 1"})
{:ok, %LessonStep{}}

iex> create_lesson_step(%{content: "Lesson Step 1"})
{:error, %Ecto.Changeset{}}
Link to this function

create_step_option(attrs)

View Source
@spec create_step_option(map()) :: step_option_changeset()

Creates a new step option.

examples

Examples

iex> create_step_option(%{title: "Step Option 1"})
{:ok, %StepOption{}}

iex> create_step_option(%{title: "Step Option 1"})
{: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{}}
@spec delete_lesson(Zoonk.Content.Lesson.t()) :: lesson_changeset()

Deletes a lesson.

examples

Examples

iex> delete_lesson(%Lesson{})
{:ok, %Lesson{}}

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

delete_lesson_step(lesson_step_id)

View Source
@spec delete_lesson_step(non_neg_integer()) :: lesson_step_changeset()

Deletes a lesson step.

examples

Examples

iex> delete_lesson_step(123)
{:ok, %LessonStep{}}

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

delete_step_option(step_option_id)

View Source
@spec delete_step_option(non_neg_integer()) :: step_option_changeset()

Deletes a step option.

examples

Examples

iex> delete_step_option(123)
{:ok, %StepOption{}}

iex> delete_step_option(123)
{: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
@spec get_lesson!(non_neg_integer()) :: Zoonk.Content.Lesson.t()

Get a lesson.

examples

Examples

iex> get_lesson!(1)
%Lesson{}
Link to this function

get_step_option!(step_option_id)

View Source
@spec get_step_option!(non_neg_integer()) :: Zoonk.Content.StepOption.t()

Get a step option.

examples

Examples

iex> get_step_option!(123)
%StepOption{}
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_lesson_steps(lesson)

View Source
@spec list_lesson_steps(Zoonk.Content.Lesson.t()) :: [Zoonk.Content.LessonStep.t()]

List lesson steps.

examples

Examples

iex> list_lesson_steps(%Lesson{})
[%LessonStep{}, ...]
@spec list_lessons(Zoonk.Content.Course.t()) :: [Zoonk.Content.Lesson.t()]

List course lessons.

examples

Examples

iex> list_lessons(%Course{})
[%Lesson{}, ...]
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{}}
Link to this function

update_lesson(lesson, attrs)

View Source
@spec update_lesson(Zoonk.Content.Lesson.t(), map()) :: lesson_changeset()

Updates a lesson.

examples

Examples

iex> update_lesson(%Lesson{}, %{name: "Lesson 1"})
{:ok, %Lesson{}}

iex> update_lesson(%Lesson{}, %{name: "Lesson 1"})
{:error, %Ecto.Changeset{}}
Link to this function

update_lesson_order(course, from_index, to_index)

View Source
@spec update_lesson_order(
  Zoonk.Content.Course.t(),
  non_neg_integer(),
  non_neg_integer()
) ::
  {:ok, [Zoonk.Content.Lesson.t()]} | {:error, [Ecto.Changeset.t()]}

Update lessons order.

Reposition all lessons between an interval when a lesson is moved.

examples

Examples

iex> update_lesson_order(%Course{}, 1, 3)
{:ok, [%Lesson{}, ...]}
Link to this function

update_lesson_step_order(lesson, from_index, to_index)

View Source
@spec update_lesson_step_order(
  Zoonk.Content.Lesson.t(),
  non_neg_integer(),
  non_neg_integer()
) ::
  {:ok, [Zoonk.Content.LessonStep.t()]} | {:error, [Ecto.Changeset.t()]}

Update lesson steps order.

Reposition all lesson steps between an interval when a lesson step is moved.

examples

Examples

iex> update_lesson_step_order(%Lesson{}, 1, 3)
{:ok, [%LessonStep{}, ...]}
Link to this function

update_step_option(step_option, attrs)

View Source
@spec update_step_option(Zoonk.Content.StepOption.t(), map()) ::
  step_option_changeset()

Update a step option.

examples

Examples

iex> update_step_option(%StepOption{}, %{title: "Step Option 1"})
{:ok, %StepOption{}}

iex> update_step_option(%StepOption{}, %{title: "Step Option 1"})
{:error, %Ecto.Changeset{}}