Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions apps/backend/drizzle.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ if (!DATABASE_URL) {
}

export default {
schema: 'src/db/schema/index.ts',
out: 'src/db/migrations',
schema: 'src/infra/db/schema/index.ts',
out: 'src/infra/db/migrations',
dialect: 'postgresql',
dbCredentials: { url: DATABASE_URL },
schemaFilter: ['auth', 'public'],
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"dev": "tsx watch --env-file=.env src/main.ts",
"build": "dotenv -e .env -- tsup src/main.ts --out-dir dist --format esm,cjs --dts",
"start": "dotenv -e .env -- node dist/main.js",
"db:seed": "tsx --env-file=.env src/db/seed.ts",
"db:seed": "tsx --env-file=.env src/infra/db/seed.ts",
"db:generate": "dotenv -e .env -- drizzle-kit generate",
"db:migrate": "dotenv -e .env -- drizzle-kit migrate",
"db:migrate:prod": "drizzle-kit migrate",
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/@types/import-item-status-enum.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { importItemStatusEnum } from '@/db/schema'
import type { importItemStatusEnum } from '@/infra/db/schema'

export type ImportStatusEnum =
(typeof importItemStatusEnum)['enumValues'][number]
2 changes: 1 addition & 1 deletion apps/backend/src/@types/item-status-enum.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import type { statusEnum } from '@/db/schema'
import type { statusEnum } from '@/infra/db/schema'

export type UserItemStatus = (typeof statusEnum)['enumValues'][number]
2 changes: 1 addition & 1 deletion apps/backend/src/@types/media-type-enum.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { mediaTypeEnum, providersEnum } from '@/db/schema'
import type { mediaTypeEnum, providersEnum } from '@/infra/db/schema'

export type MediaTypeEnum = (typeof mediaTypeEnum)['enumValues'][number]

Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/@types/providers.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import type { providersEnum } from '@/db/schema'
import type { providersEnum } from '@/infra/db/schema'

export type ProvidersEnum = (typeof providersEnum)['enumValues'][number]
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/feedback.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type Feedback = InferSelectModel<typeof schema.feedbacks>
export type InsertFeedbackModel = InferInsertModel<typeof schema.feedbacks>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/follow.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type Follow = InferSelectModel<typeof schema.followers>
export type InsertFollow = InferInsertModel<typeof schema.followers>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/import-movies.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type ImportMovie = InferSelectModel<typeof schema.importMovies>

Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/import-series.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type ImportSeries = InferSelectModel<typeof schema.importSeries>

Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/import.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'
import type { ImportMovie, InsertImportMovie } from './import-movies'
import type { ImportSeries, InsertImportSeries } from './import-series'

Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/likes.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type Like = InferSelectModel<typeof schema.likes>
export type InsertLike = Pick<
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/list-item.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type ListItem = InferSelectModel<typeof schema.listItems>
export type InsertListItem = InferInsertModel<typeof schema.listItems>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/lists.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type List = InferSelectModel<typeof schema.lists>
export type InsertListModel = InferInsertModel<typeof schema.lists>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/magic-token.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { InferInsertModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type InsertMagicTokenModel = InferInsertModel<typeof schema.magicTokens>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/review-reply.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type ReviewReply = InferSelectModel<typeof schema.reviewReplies>
export type InsertReviewReplyModel = InferInsertModel<
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/review.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type Review = InferSelectModel<typeof schema.reviews>
export type InsertReviewModel = InferInsertModel<typeof schema.reviews>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/social-link.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type SocialLink = InferSelectModel<typeof schema.socialLinks>
export type InsertSocialLink = InferInsertModel<typeof schema.socialLinks>
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/subscription.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type Subscription = InferSelectModel<typeof schema.subscriptions>
export type InsertSubscriptionModel = InferInsertModel<
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/user-activity.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

type NonNullableRequired<T> = {
[K in keyof T]-?: NonNullable<T[K]>
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/user-episode.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type UserEpisode = InferSelectModel<typeof schema.userEpisodes>
export type InsertUserEpisode = Pick<
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/user-item.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { UserItemStatus } from '@/@types/item-status-enum'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type UserItem = InferSelectModel<typeof schema.userItems>
export type InsertUserItem = Pick<
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/entities/user.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { InferInsertModel, InferSelectModel } from 'drizzle-orm'
import type { schema } from '@/db/schema'
import type { schema } from '@/infra/db/schema'

export type User = InferSelectModel<typeof schema.users>
export type InsertUserModel = InferInsertModel<typeof schema.users>
4 changes: 2 additions & 2 deletions apps/backend/src/domain/services/feedback/create-feedback.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { insertFeedback } from '@/db/repositories/feedback-repository'
import { isForeignKeyViolation } from '@/db/utils/postgres-errors'
import type { InsertFeedbackModel } from '@/domain/entities/feedback'
import { UserNotFoundError } from '@/domain/errors/user-not-found'
import { insertFeedback } from '@/infra/db/repositories/feedback-repository'
import { isForeignKeyViolation } from '@/infra/db/utils/postgres-errors'

export async function createFeedbackService(params: InsertFeedbackModel) {
try {
Expand Down
4 changes: 2 additions & 2 deletions apps/backend/src/domain/services/follows/create-follow.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { insertFollow } from '@/db/repositories/followers-repository'
import { isUniqueViolation } from '@/db/utils/postgres-errors'
import { FollowAlreadyRegisteredError } from '@/domain/errors/follow-already-registered'
import { insertFollow } from '@/infra/db/repositories/followers-repository'
import { isUniqueViolation } from '@/infra/db/utils/postgres-errors'

export type CreateFollowServiceInput = {
followerId: string
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/follows/delete-follow.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { deleteFollow } from '@/db/repositories/followers-repository'
import { deleteFollow } from '@/infra/db/repositories/followers-repository'

export type DeleteFollowServiceInput = {
followerId: string
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/follows/get-follow.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getFollow } from '@/db/repositories/followers-repository'
import { getFollow } from '@/infra/db/repositories/followers-repository'

export type GetFollowServiceInput = {
followerId: string
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/follows/get-followers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { selectFollowers } from '@/db/repositories/followers-repository'
import { selectFollowers } from '@/infra/db/repositories/followers-repository'

export type GetFollowersInput = {
followedId?: string
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { insertUserImport } from '@/db/repositories/user-import-repository'
import { isForeignKeyViolation } from '@/db/utils/postgres-errors'
import type { InsertUserImportWithItems } from '@/domain/entities/import'
import { FailedToInsertUserImport } from '@/domain/errors/failed-to-import-user-items'
import { UserNotFoundError } from '@/domain/errors/user-not-found'
import { insertUserImport } from '@/infra/db/repositories/user-import-repository'
import { isForeignKeyViolation } from '@/infra/db/utils/postgres-errors'

export async function createUserImport(params: InsertUserImportWithItems) {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getDetailedUserImport } from '@/db/repositories/user-import-repository'
import { getDetailedUserImport } from '@/infra/db/repositories/user-import-repository'

export async function getDetailedUserImportById(id: string) {
const result = await getDetailedUserImport(id)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getImportMovie } from '@/db/repositories/import-movies-repository'
import { getImportMovie } from '@/infra/db/repositories/import-movies-repository'

export async function getImportMovieById(id: string) {
const movie = getImportMovie(id)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getImportSeries } from '@/db/repositories/import-series-repository'
import { getImportSeries } from '@/infra/db/repositories/import-series-repository'

export async function getImportSeriesById(id: string) {
const series = getImportSeries(id)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getUserImport } from '@/db/repositories/user-import-repository'
import { getUserImport } from '@/infra/db/repositories/user-import-repository'

export async function getUserImportById(id: string) {
const result = await getUserImport(id)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DeleteQueueCommand, ReceiveMessageCommand } from '@aws-sdk/client-sqs'
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
import { createSqsClient, initializeSQS } from '@/adapters/sqs'
import { config } from '@/config'
import { createSqsClient, initializeSQS } from '@/infra/adapters/sqs'
import { makeManyRawImportMovies } from '@/test/factories/make-import-movies'
import { makeManyRawImportSeries } from '@/test/factories/make-import-series'
import { makeUser } from '@/test/factories/make-user'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { config } from '@/config'
import type { DetailedUserImport } from '@/domain/entities/import'
import type { QueueMessage } from '@/domain/entities/queue-message'
import { queueServiceFactory } from '@/factories/queue-service-factory'
import { queueServiceFactory } from '@/infra/factories/queue-service-factory'

export async function publishToQueue(userImport: DetailedUserImport) {
processAndPublish(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { ImportStatusEnum } from '@/@types/import-item-status-enum'
import { updateImportMoviesStatus as repository } from '@/db/repositories/import-movies-repository'
import { checkAndFinalizeImport } from '@/db/repositories/user-import-repository'
import { updateImportMoviesStatus as repository } from '@/infra/db/repositories/import-movies-repository'
import { checkAndFinalizeImport } from '@/infra/db/repositories/user-import-repository'

export async function updateImportMoviesStatus(
id: string,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { ImportStatusEnum } from '@/@types/import-item-status-enum'
import { updateImportSeriesStatus as repository } from '@/db/repositories/import-series-repository'
import { checkAndFinalizeImport } from '@/db/repositories/user-import-repository'
import { updateImportSeriesStatus as repository } from '@/infra/db/repositories/import-series-repository'
import { checkAndFinalizeImport } from '@/infra/db/repositories/user-import-repository'

export type UpdateUserImportInterface = {
id: string
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/likes/create-like.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { insertLike } from '@/db/repositories/likes-repository'
import type { InsertLike } from '@/domain/entities/likes'
import { insertLike } from '@/infra/db/repositories/likes-repository'

export async function createLikeService(values: InsertLike) {
const [like] = await insertLike(values)
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/likes/delete-like.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { deleteLike } from '@/db/repositories/likes-repository'
import { deleteLike } from '@/infra/db/repositories/likes-repository'

export async function deleteLikeService(id: string) {
const [like] = await deleteLike(id)
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/likes/get-likes.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { selectLikes } from '@/db/repositories/likes-repository'
import { selectLikes } from '@/infra/db/repositories/likes-repository'

export async function getLikesService(entityId: string) {
const likes = await selectLikes(entityId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { insertListItem } from '@/db/repositories/list-item-repository'
import { isForeignKeyViolation } from '@/db/utils/postgres-errors'
import { insertListItem } from '@/infra/db/repositories/list-item-repository'
import { isForeignKeyViolation } from '@/infra/db/utils/postgres-errors'
import type { InsertListItem } from '../../entities/list-item'
import { ListNotFoundError } from '../../errors/list-not-found-error'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { deleteListItem } from '@/db/repositories/list-item-repository'
import { ListItemNotFoundError } from '@/domain/errors/list-item-not-found-error'
import { deleteListItem } from '@/infra/db/repositories/list-item-repository'

type DeleteListItemInput = { id: string; userId: string }

Expand Down
4 changes: 2 additions & 2 deletions apps/backend/src/domain/services/list-item/get-list-items.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { selectListItems } from '@/db/repositories/list-item-repository'
import { getListById } from '@/db/repositories/list-repository'
import { selectListItems } from '@/infra/db/repositories/list-item-repository'
import { getListById } from '@/infra/db/repositories/list-repository'
import { ListNotFoundError } from '../../errors/list-not-found-error'

type GetListItemsInput = { listId: string }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { updateListItems } from '@/db/repositories/list-item-repository'
import { updateListItems } from '@/infra/db/repositories/list-item-repository'

export type UpdateListItemsServiceInput = {
listItems: Array<{ id: string; position: number }>
Expand Down
6 changes: 3 additions & 3 deletions apps/backend/src/domain/services/lists/create-list.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { InferInsertModel } from 'drizzle-orm'
import { insertList } from '@/db/repositories/list-repository'
import type { schema } from '@/db/schema'
import { isForeignKeyViolation } from '@/db/utils/postgres-errors'
import { insertList } from '@/infra/db/repositories/list-repository'
import type { schema } from '@/infra/db/schema'
import { isForeignKeyViolation } from '@/infra/db/utils/postgres-errors'
import { UserNotFoundError } from '../../errors/user-not-found'

export type CreateListInput = InferInsertModel<typeof schema.lists>
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/lists/delete-list.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { deleteList } from '@/db/repositories/list-repository'
import { deleteList } from '@/infra/db/repositories/list-repository'

type DeleteListInput = { id: string; userId: string }

Expand Down
4 changes: 2 additions & 2 deletions apps/backend/src/domain/services/lists/get-list-progress.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { selectListItems } from '@/db/repositories/list-item-repository'
import { selectAllUserItemsByStatus } from '@/db/repositories/user-item-repository'
import { selectListItems } from '@/infra/db/repositories/list-item-repository'
import { selectAllUserItemsByStatus } from '@/infra/db/repositories/user-item-repository'

type GetListProgressServiceParams = {
id: string
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/lists/get-list.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getListById } from '@/db/repositories/list-repository'
import { getListById } from '@/infra/db/repositories/list-repository'
import { ListNotFoundError } from '../../errors/list-not-found-error'

type GetListInput = {
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/domain/services/lists/get-lists.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { selectLists } from '@/db/repositories/list-repository'
import { selectLists } from '@/infra/db/repositories/list-repository'

export type GetListsInput = {
userId?: string
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { updateListBanner } from '@/db/repositories/list-repository'
import { ListNotFoundError } from '@/domain/errors/list-not-found-error'
import { updateListBanner } from '@/infra/db/repositories/list-repository'

export type UpdateListBannerInput = {
listId: string
Expand Down
4 changes: 2 additions & 2 deletions apps/backend/src/domain/services/lists/update-list.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { InferInsertModel } from 'drizzle-orm'
import { updateList } from '@/db/repositories/list-repository'
import type { schema } from '@/db/schema'
import { updateList } from '@/infra/db/repositories/list-repository'
import type { schema } from '@/infra/db/schema'

export type UpdateListValues = Omit<
InferInsertModel<typeof schema.lists>,
Expand Down
4 changes: 2 additions & 2 deletions apps/backend/src/domain/services/login/login.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { z } from 'zod'
import { findUserByEmailOrUsername } from '@/db/repositories/login-repository'
import { InvalidPasswordError } from '@/domain/errors/invalid-password-error'
import type { loginBodySchema } from '@/http/schemas/login'
import { findUserByEmailOrUsername } from '@/infra/db/repositories/login-repository'
import type { loginBodySchema } from '@/infra/http/schemas/login'
import { comparePassword } from '@/utils/password'
import { InvalidCredentialsError } from '../../errors/invalid-credentials-error'
import { generateMagicLinkTokenService } from '../magic-link/generate-magic-link'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { randomBytes } from 'node:crypto'
import { insertMagicToken } from '@/db/repositories/magic-tokens'
import { insertMagicToken } from '@/infra/db/repositories/magic-tokens'

const FIFTEEN_MINUTES = new Date(Date.now() + 15 * 60000)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { config } from '@/config'
import type { EmailMessage } from '@/domain/entities/email-message'
import { emailServiceFactory } from '@/factories/resend-factory'
import { emailServiceFactory } from '@/infra/factories/resend-factory'

type SendMagicLinkEmailServiceInput = {
email: string
Expand Down
Loading