// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.30.0

package sqlc

import (
	"net/netip"

	"github.com/jackc/pgx/v5/pgtype"
)

type AuditLog struct {
	ID           pgtype.UUID      `json:"id"`
	UserID       pgtype.UUID      `json:"userId"`
	Action       string           `json:"action"`
	ResourceType string           `json:"resourceType"`
	ResourceID   pgtype.UUID      `json:"resourceId"`
	OldValues    []byte           `json:"oldValues"`
	NewValues    []byte           `json:"newValues"`
	IpAddress    *netip.Addr      `json:"ipAddress"`
	UserAgent    *string          `json:"userAgent"`
	CreatedAt    pgtype.Timestamp `json:"createdAt"`
}

type Bookmark struct {
	ID            pgtype.UUID      `json:"id"`
	Title         string           `json:"title"`
	Url           string           `json:"url"`
	Description   *string          `json:"description"`
	FaviconUrl    *string          `json:"faviconUrl"`
	ScreenshotUrl *string          `json:"screenshotUrl"`
	UserID        pgtype.UUID      `json:"userId"`
	IsArchived    *bool            `json:"isArchived"`
	IsFavorite    *bool            `json:"isFavorite"`
	CreatedAt     pgtype.Timestamp `json:"createdAt"`
	UpdatedAt     pgtype.Timestamp `json:"updatedAt"`
}

type BookmarkTag struct {
	BookmarkID pgtype.UUID `json:"bookmarkId"`
	TagID      pgtype.UUID `json:"tagId"`
}

type File struct {
	ID            pgtype.UUID      `json:"id"`
	Filename      string           `json:"filename"`
	OriginalName  string           `json:"originalName"`
	FileSize      int64            `json:"fileSize"`
	MimeType      *string          `json:"mimeType"`
	FilePath      string           `json:"filePath"`
	ThumbnailPath *string          `json:"thumbnailPath"`
	UserID        pgtype.UUID      `json:"userId"`
	CreatedAt     pgtype.Timestamp `json:"createdAt"`
	UpdatedAt     pgtype.Timestamp `json:"updatedAt"`
}

type FileTag struct {
	FileID pgtype.UUID `json:"fileId"`
	TagID  pgtype.UUID `json:"tagId"`
}

type Note struct {
	ID        pgtype.UUID      `json:"id"`
	Title     string           `json:"title"`
	Content   *string          `json:"content"`
	UserID    pgtype.UUID      `json:"userId"`
	CreatedAt pgtype.Timestamp `json:"createdAt"`
	UpdatedAt pgtype.Timestamp `json:"updatedAt"`
}

type NoteTag struct {
	NoteID pgtype.UUID `json:"noteId"`
	TagID  pgtype.UUID `json:"tagId"`
}

type Tag struct {
	ID        pgtype.UUID      `json:"id"`
	Name      string           `json:"name"`
	Color     *string          `json:"color"`
	UserID    pgtype.UUID      `json:"userId"`
	CreatedAt pgtype.Timestamp `json:"createdAt"`
	UpdatedAt pgtype.Timestamp `json:"updatedAt"`
}

type Task struct {
	ID          pgtype.UUID      `json:"id"`
	Title       string           `json:"title"`
	Description *string          `json:"description"`
	Status      *string          `json:"status"`
	Priority    *string          `json:"priority"`
	DueDate     pgtype.Timestamp `json:"dueDate"`
	UserID      pgtype.UUID      `json:"userId"`
	CreatedAt   pgtype.Timestamp `json:"createdAt"`
	UpdatedAt   pgtype.Timestamp `json:"updatedAt"`
}

type TaskTag struct {
	TaskID pgtype.UUID `json:"taskId"`
	TagID  pgtype.UUID `json:"tagId"`
}

type User struct {
	ID           pgtype.UUID      `json:"id"`
	Email        string           `json:"email"`
	PasswordHash string           `json:"passwordHash"`
	FirstName    *string          `json:"firstName"`
	LastName     *string          `json:"lastName"`
	AvatarUrl    *string          `json:"avatarUrl"`
	IsActive     *bool            `json:"isActive"`
	IsVerified   *bool            `json:"isVerified"`
	LastLogin    pgtype.Timestamp `json:"lastLogin"`
	CreatedAt    pgtype.Timestamp `json:"createdAt"`
	UpdatedAt    pgtype.Timestamp `json:"updatedAt"`
}
