neiam
/diogramos
diogramos
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
Credo: share-link specs name Canvas.t() and Folder.t(), not bare structs
5d06442 · Gabe Morell · 2026-11-04 20:30
Files changed
modified
lib/diogramos/diagrams/canvas.ex
+2
−0
@@ -23,6 +23,8 @@ defmodule Diogramos.Diagrams.Canvas do
| 23 | 23 | :updated_at |
| 24 | 24 | ]} |
| 25 | 25 | |
| 26 | + @type t :: %__MODULE__{} | |
| 27 | + | |
| 26 | 28 | schema "canvases" do |
| 27 | 29 | field :slug, :string |
| 28 | 30 | field :title, :string |
modified
lib/diogramos/diagrams/folder.ex
+2
−0
@@ -8,6 +8,8 @@ defmodule Diogramos.Diagrams.Folder do
| 8 | 8 | |
| 9 | 9 | alias Diogramos.Accounts.User |
| 10 | 10 | |
| 11 | + @type t :: %__MODULE__{} | |
| 12 | + | |
| 11 | 13 | schema "folders" do |
| 12 | 14 | field :name, :string |
| 13 | 15 |
modified
lib/diogramos/diagrams/share_links.ex
+3
−3
@@ -14,7 +14,7 @@ defmodule Diogramos.Diagrams.ShareLinks do
| 14 | 14 | alias Diogramos.Accounts.{Scope, User} |
| 15 | 15 | alias Diogramos.Diagrams.{Canvas, Folder, Permissions, ShareLink} |
| 16 | 16 | |
| 17 | − @spec create(Scope.t(), %Canvas{} | %Folder{}, String.t(), keyword()) :: | |
| 17 | + @spec create(Scope.t(), Canvas.t() | Folder.t(), String.t(), keyword()) :: | |
| 18 | 18 | {:ok, ShareLink.t()} | {:error, Ecto.Changeset.t() | :forbidden} |
| 19 | 19 | def create(%Scope{user: %User{id: user_id}} = scope, subject, role, opts \\ []) |
| 20 | 20 | when role in ["viewer", "editor"] do |
@@ -41,7 +41,7 @@ defmodule Diogramos.Diagrams.ShareLinks do
| 41 | 41 | end |
| 42 | 42 | end |
| 43 | 43 | |
| 44 | − @spec list_for(%Canvas{} | %Folder{}) :: [ShareLink.t()] | |
| 44 | + @spec list_for(Canvas.t() | Folder.t()) :: [ShareLink.t()] | |
| 45 | 45 | def list_for(subject) do |
| 46 | 46 | type = subject_type(subject) |
| 47 | 47 |
@@ -76,7 +76,7 @@ defmodule Diogramos.Diagrams.ShareLinks do
| 76 | 76 | current user just refreshes the existing grant. |
| 77 | 77 | """ |
| 78 | 78 | @spec redeem(String.t(), User.t() | nil) :: |
| 79 | − {:ok, User.t(), %Canvas{} | %Folder{}} | |
| 79 | + {:ok, User.t(), Canvas.t() | Folder.t()} | |
| 80 | 80 | | {:error, :invalid_link | :subject_missing | Ecto.Changeset.t()} |
| 81 | 81 | def redeem(token, current_user) when is_binary(token) do |
| 82 | 82 | with %ShareLink{} = link <- get_active_by_token(token), |
Parents: 16b4f36