Compare commits
	
		
			No commits in common. "ad191a5393e5486c4d53cb1c45581d2c914da358" and "ad4f9576d01ad3dc6e6ecd37b53ec38ebfc3cb1b" have entirely different histories.
		
	
	
		
			ad191a5393
			...
			ad4f9576d0
		
	
		
					 13 changed files with 101 additions and 669 deletions
				
			
		| 
						 | 
					@ -3,6 +3,7 @@ package database
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"encoding/hex"
 | 
						"encoding/hex"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"log/slog"
 | 
						"log/slog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"git.jmbit.de/jmb/scanfile/server/internal/sqlc"
 | 
						"git.jmbit.de/jmb/scanfile/server/internal/sqlc"
 | 
				
			||||||
| 
						 | 
					@ -48,6 +49,31 @@ func InsertFileProperties(properties sqlc.InsertFilePropertiesParams) error {
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// InsertJsonResult() into one of the following tables:
 | 
				
			||||||
 | 
					// diec, msoffice_mraptor, msoffice_oleid, msoffice_olevba
 | 
				
			||||||
 | 
					func InsertJsonResult(fileID pgtype.UUID, data []byte, table string) error {
 | 
				
			||||||
 | 
						query := sqlc.New(pool)
 | 
				
			||||||
 | 
						var err error
 | 
				
			||||||
 | 
						switch table {
 | 
				
			||||||
 | 
						case "diec":
 | 
				
			||||||
 | 
							err = query.InsertFileDIEC(context.Background(), sqlc.InsertFileDIECParams{FileID: fileID, Data: data})
 | 
				
			||||||
 | 
						case "msoffice_oleid":
 | 
				
			||||||
 | 
							err = query.InsertFileMsofficeOleid(context.Background(), sqlc.InsertFileMsofficeOleidParams{FileID: fileID, Data: data})
 | 
				
			||||||
 | 
						case "msoffice_olevba":
 | 
				
			||||||
 | 
							err = query.InsertFileMsofficeOlevba(context.Background(), sqlc.InsertFileMsofficeOlevbaParams{FileID: fileID, Data: data})
 | 
				
			||||||
 | 
						case "msoffice_mraptor":
 | 
				
			||||||
 | 
							err = query.InsertFileMsofficeMraptor(context.Background(), sqlc.InsertFileMsofficeMraptorParams{FileID: fileID, Data: data})
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							err = fmt.Errorf("Invalid table name")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Unable to insert DIEC results", "file-uuid", fileID.String(), "error", err)
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						slog.Debug("InsertJsonResult", "file-uuid", fileID.String(), "table", table)
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetFileMime() returns the MimeType for a file
 | 
					// GetFileMime() returns the MimeType for a file
 | 
				
			||||||
func GetFileMime(fileID pgtype.UUID) (string, error) {
 | 
					func GetFileMime(fileID pgtype.UUID) (string, error) {
 | 
				
			||||||
	query := sqlc.New(pool)
 | 
						query := sqlc.New(pool)
 | 
				
			||||||
| 
						 | 
					@ -68,15 +94,3 @@ func GetFileProperties(fileID pgtype.UUID) (sqlc.FileProperty, error) {
 | 
				
			||||||
  return fileProperties, err
 | 
					  return fileProperties, err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func GetAllFiles() ([]sqlc.File, error) {
 | 
					 | 
				
			||||||
  query := sqlc.New(pool)
 | 
					 | 
				
			||||||
	//TODO use actual request context to avoid murdering the DB
 | 
					 | 
				
			||||||
	files, err := query.GetAllFiles(context.Background())
 | 
					 | 
				
			||||||
  if err != nil {
 | 
					 | 
				
			||||||
    slog.Error("Error in GetAllProperties",  "error", err)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return files, err
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,3 @@ WHERE id = $1;
 | 
				
			||||||
-- name: GetFileMime :one
 | 
					-- name: GetFileMime :one
 | 
				
			||||||
SELECT mimetype FROM files
 | 
					SELECT mimetype FROM files
 | 
				
			||||||
WHERE id = $1;
 | 
					WHERE id = $1;
 | 
				
			||||||
 | 
					 | 
				
			||||||
-- name: GetAllFiles :many
 | 
					 | 
				
			||||||
SELECT * FROM files
 | 
					 | 
				
			||||||
ORDER BY created DESC;
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,24 @@ CREATE TABLE IF NOT EXISTS diec (
 | 
				
			||||||
  data JSONB
 | 
					  data JSONB
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS msoffice_oleid (
 | 
				
			||||||
 | 
					  id BIGSERIAL PRIMARY KEY,
 | 
				
			||||||
 | 
					  file_id UUID REFERENCES files (id) ON DELETE CASCADE,
 | 
				
			||||||
 | 
					  data JSONB
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS msoffice_olevba (
 | 
				
			||||||
 | 
					  id BIGSERIAL PRIMARY KEY,
 | 
				
			||||||
 | 
					  file_id UUID REFERENCES files (id) ON DELETE CASCADE,
 | 
				
			||||||
 | 
					  data JSONB
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE IF NOT EXISTS msoffice_mraptor (
 | 
				
			||||||
 | 
					  id BIGSERIAL PRIMARY KEY,
 | 
				
			||||||
 | 
					  file_id UUID REFERENCES files (id) ON DELETE CASCADE,
 | 
				
			||||||
 | 
					  data JSONB
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CREATE TABLE IF NOT EXISTS msoffice (
 | 
					CREATE TABLE IF NOT EXISTS msoffice (
 | 
				
			||||||
  id BIGSERIAL PRIMARY KEY,
 | 
					  id BIGSERIAL PRIMARY KEY,
 | 
				
			||||||
  file_id UUID REFERENCES files (id) ON DELETE CASCADE,
 | 
					  file_id UUID REFERENCES files (id) ON DELETE CASCADE,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,6 +53,24 @@ type Msoffice struct {
 | 
				
			||||||
	Macros          [][]string
 | 
						Macros          [][]string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MsofficeMraptor struct {
 | 
				
			||||||
 | 
						ID     int64
 | 
				
			||||||
 | 
						FileID pgtype.UUID
 | 
				
			||||||
 | 
						Data   []byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MsofficeOleid struct {
 | 
				
			||||||
 | 
						ID     int64
 | 
				
			||||||
 | 
						FileID pgtype.UUID
 | 
				
			||||||
 | 
						Data   []byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type MsofficeOlevba struct {
 | 
				
			||||||
 | 
						ID     int64
 | 
				
			||||||
 | 
						FileID pgtype.UUID
 | 
				
			||||||
 | 
						Data   []byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ProcessingJob struct {
 | 
					type ProcessingJob struct {
 | 
				
			||||||
	ID        int64
 | 
						ID        int64
 | 
				
			||||||
	FileID    pgtype.UUID
 | 
						FileID    pgtype.UUID
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,40 +62,6 @@ func (q *Queries) DeleteFile(ctx context.Context, id pgtype.UUID) error {
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const getAllFiles = `-- name: GetAllFiles :many
 | 
					 | 
				
			||||||
SELECT id, name, description, mimetype, size, blake2, created, updated FROM files
 | 
					 | 
				
			||||||
ORDER BY created DESC
 | 
					 | 
				
			||||||
`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (q *Queries) GetAllFiles(ctx context.Context) ([]File, error) {
 | 
					 | 
				
			||||||
	rows, err := q.db.Query(ctx, getAllFiles)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	defer rows.Close()
 | 
					 | 
				
			||||||
	var items []File
 | 
					 | 
				
			||||||
	for rows.Next() {
 | 
					 | 
				
			||||||
		var i File
 | 
					 | 
				
			||||||
		if err := rows.Scan(
 | 
					 | 
				
			||||||
			&i.ID,
 | 
					 | 
				
			||||||
			&i.Name,
 | 
					 | 
				
			||||||
			&i.Description,
 | 
					 | 
				
			||||||
			&i.Mimetype,
 | 
					 | 
				
			||||||
			&i.Size,
 | 
					 | 
				
			||||||
			&i.Blake2,
 | 
					 | 
				
			||||||
			&i.Created,
 | 
					 | 
				
			||||||
			&i.Updated,
 | 
					 | 
				
			||||||
		); err != nil {
 | 
					 | 
				
			||||||
			return nil, err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		items = append(items, i)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err := rows.Err(); err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return items, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const getFileByBlake2 = `-- name: GetFileByBlake2 :one
 | 
					const getFileByBlake2 = `-- name: GetFileByBlake2 :one
 | 
				
			||||||
SELECT id, name, description, mimetype, size, blake2, created, updated
 | 
					SELECT id, name, description, mimetype, size, blake2, created, updated
 | 
				
			||||||
FROM files
 | 
					FROM files
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,8 +26,8 @@ type GetMSOfficeDataRow struct {
 | 
				
			||||||
	Mraptor []byte
 | 
						Mraptor []byte
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (q *Queries) GetMSOfficeData(ctx context.Context, dollar_1 pgtype.UUID) (GetMSOfficeDataRow, error) {
 | 
					func (q *Queries) GetMSOfficeData(ctx context.Context, fileID pgtype.UUID) (GetMSOfficeDataRow, error) {
 | 
				
			||||||
	row := q.db.QueryRow(ctx, getMSOfficeData, dollar_1)
 | 
						row := q.db.QueryRow(ctx, getMSOfficeData, fileID)
 | 
				
			||||||
	var i GetMSOfficeDataRow
 | 
						var i GetMSOfficeDataRow
 | 
				
			||||||
	err := row.Scan(
 | 
						err := row.Scan(
 | 
				
			||||||
		&i.FileID,
 | 
							&i.FileID,
 | 
				
			||||||
| 
						 | 
					@ -74,12 +74,12 @@ INSERT INTO msoffice_mraptor (
 | 
				
			||||||
`
 | 
					`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type InsertFileMsofficeMraptorParams struct {
 | 
					type InsertFileMsofficeMraptorParams struct {
 | 
				
			||||||
	Column1 pgtype.UUID
 | 
						FileID pgtype.UUID
 | 
				
			||||||
	Column2 []byte
 | 
						Data   []byte
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (q *Queries) InsertFileMsofficeMraptor(ctx context.Context, arg InsertFileMsofficeMraptorParams) error {
 | 
					func (q *Queries) InsertFileMsofficeMraptor(ctx context.Context, arg InsertFileMsofficeMraptorParams) error {
 | 
				
			||||||
	_, err := q.db.Exec(ctx, insertFileMsofficeMraptor, arg.Column1, arg.Column2)
 | 
						_, err := q.db.Exec(ctx, insertFileMsofficeMraptor, arg.FileID, arg.Data)
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -90,12 +90,12 @@ INSERT INTO msoffice_oleid (
 | 
				
			||||||
`
 | 
					`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type InsertFileMsofficeOleidParams struct {
 | 
					type InsertFileMsofficeOleidParams struct {
 | 
				
			||||||
	Column1 pgtype.UUID
 | 
						FileID pgtype.UUID
 | 
				
			||||||
	Column2 []byte
 | 
						Data   []byte
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (q *Queries) InsertFileMsofficeOleid(ctx context.Context, arg InsertFileMsofficeOleidParams) error {
 | 
					func (q *Queries) InsertFileMsofficeOleid(ctx context.Context, arg InsertFileMsofficeOleidParams) error {
 | 
				
			||||||
	_, err := q.db.Exec(ctx, insertFileMsofficeOleid, arg.Column1, arg.Column2)
 | 
						_, err := q.db.Exec(ctx, insertFileMsofficeOleid, arg.FileID, arg.Data)
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,12 +106,12 @@ INSERT INTO msoffice_olevba (
 | 
				
			||||||
`
 | 
					`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type InsertFileMsofficeOlevbaParams struct {
 | 
					type InsertFileMsofficeOlevbaParams struct {
 | 
				
			||||||
	Column1 pgtype.UUID
 | 
						FileID pgtype.UUID
 | 
				
			||||||
	Column2 []byte
 | 
						Data   []byte
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (q *Queries) InsertFileMsofficeOlevba(ctx context.Context, arg InsertFileMsofficeOlevbaParams) error {
 | 
					func (q *Queries) InsertFileMsofficeOlevba(ctx context.Context, arg InsertFileMsofficeOlevbaParams) error {
 | 
				
			||||||
	_, err := q.db.Exec(ctx, insertFileMsofficeOlevba, arg.Column1, arg.Column2)
 | 
						_, err := q.db.Exec(ctx, insertFileMsofficeOlevba, arg.FileID, arg.Data)
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ templ Base(title string) {
 | 
				
			||||||
    <title>{title}</title>
 | 
					    <title>{title}</title>
 | 
				
			||||||
    <link rel="stylesheet" href="/assets/styles.css"/>
 | 
					    <link rel="stylesheet" href="/assets/styles.css"/>
 | 
				
			||||||
  </head>
 | 
					  </head>
 | 
				
			||||||
  <body class="flex flex-col min-h-screen">
 | 
					  <body>
 | 
				
			||||||
    <header>
 | 
					    <header>
 | 
				
			||||||
    @NavBar(title)
 | 
					    @NavBar(title)
 | 
				
			||||||
    </header>
 | 
					    </header>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,7 @@ func Base(title string) templ.Component {
 | 
				
			||||||
		if templ_7745c5c3_Err != nil {
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
			return templ_7745c5c3_Err
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</title><link rel=\"stylesheet\" href=\"/assets/styles.css\"></head><body class=\"flex flex-col min-h-screen\"><header>")
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</title><link rel=\"stylesheet\" href=\"/assets/styles.css\"></head><body><header>")
 | 
				
			||||||
		if templ_7745c5c3_Err != nil {
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
			return templ_7745c5c3_Err
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,61 +0,0 @@
 | 
				
			||||||
package web
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "git.jmbit.de/jmb/scanfile/server/internal/sqlc"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "git.jmbit.de/jmb/scanfile/server/web/templui/components/table"
 | 
					 | 
				
			||||||
import "fmt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
templ FileList(files []sqlc.File) {
 | 
					 | 
				
			||||||
  @table.Table() {
 | 
					 | 
				
			||||||
    @table.Header() {
 | 
					 | 
				
			||||||
      @table.Row() {
 | 
					 | 
				
			||||||
        @table.Head() {
 | 
					 | 
				
			||||||
          Nr
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        @table.Head() {
 | 
					 | 
				
			||||||
          Name
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        @table.Head() {
 | 
					 | 
				
			||||||
          Size
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        @table.Head() {
 | 
					 | 
				
			||||||
          Uploaded
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        @table.Head() {
 | 
					 | 
				
			||||||
          UUID
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    @table.Body() {
 | 
					 | 
				
			||||||
      for i, file := range files {
 | 
					 | 
				
			||||||
        @table.Row() {
 | 
					 | 
				
			||||||
          @table.Cell() {
 | 
					 | 
				
			||||||
            <a href={templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))}>
 | 
					 | 
				
			||||||
            {fmt.Sprintf("%d", i)}
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          @table.Cell() {
 | 
					 | 
				
			||||||
            <a href={templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))}>
 | 
					 | 
				
			||||||
            {file.Name}
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          @table.Cell() {
 | 
					 | 
				
			||||||
            <a href={templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))}>
 | 
					 | 
				
			||||||
            {fmt.Sprintf("%d", file.Size)}
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          @table.Cell() {
 | 
					 | 
				
			||||||
            <a href={templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))}>
 | 
					 | 
				
			||||||
            {file.Created.Time.Format("2006-01-02 15:04:05 MST")}
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          @table.Cell() {
 | 
					 | 
				
			||||||
            <a href={templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))}>
 | 
					 | 
				
			||||||
            {file.ID.String()}
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,499 +0,0 @@
 | 
				
			||||||
// Code generated by templ - DO NOT EDIT.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// templ: version: v0.3.865
 | 
					 | 
				
			||||||
package web
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//lint:file-ignore SA4006 This context is only used if a nested component is present.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "github.com/a-h/templ"
 | 
					 | 
				
			||||||
import templruntime "github.com/a-h/templ/runtime"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "git.jmbit.de/jmb/scanfile/server/internal/sqlc"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "git.jmbit.de/jmb/scanfile/server/web/templui/components/table"
 | 
					 | 
				
			||||||
import "fmt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func FileList(files []sqlc.File) templ.Component {
 | 
					 | 
				
			||||||
	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 | 
					 | 
				
			||||||
			return templ_7745c5c3_CtxErr
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
		if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
			defer func() {
 | 
					 | 
				
			||||||
				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
				if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}()
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
 | 
					 | 
				
			||||||
		if templ_7745c5c3_Var1 == nil {
 | 
					 | 
				
			||||||
			templ_7745c5c3_Var1 = templ.NopComponent
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		ctx = templ.ClearChildren(ctx)
 | 
					 | 
				
			||||||
		templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
			if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
				defer func() {
 | 
					 | 
				
			||||||
					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
			templ_7745c5c3_Var3 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
				templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
				templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
				if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
					defer func() {
 | 
					 | 
				
			||||||
						templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}()
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
				templ_7745c5c3_Var4 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
					templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
					templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
					if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
						defer func() {
 | 
					 | 
				
			||||||
							templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
								templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
						}()
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
					templ_7745c5c3_Var5 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
						templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
						templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
						if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
							defer func() {
 | 
					 | 
				
			||||||
								templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
								if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
									templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}()
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Nr")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						return nil
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, " ")
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Var6 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
						templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
						templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
						if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
							defer func() {
 | 
					 | 
				
			||||||
								templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
								if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
									templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}()
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "Name")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						return nil
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " ")
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Var7 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
						templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
						templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
						if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
							defer func() {
 | 
					 | 
				
			||||||
								templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
								if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
									templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}()
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "Size")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						return nil
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var7), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, " ")
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Var8 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
						templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
						templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
						if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
							defer func() {
 | 
					 | 
				
			||||||
								templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
								if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
									templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}()
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "Uploaded")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						return nil
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var8), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, " ")
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					templ_7745c5c3_Var9 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
						templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
						templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
						if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
							defer func() {
 | 
					 | 
				
			||||||
								templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
								if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
									templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}()
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "UUID")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						return nil
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var9), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					return nil
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
				templ_7745c5c3_Err = table.Row().Render(templ.WithChildren(ctx, templ_7745c5c3_Var4), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				return nil
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
			templ_7745c5c3_Err = table.Header().Render(templ.WithChildren(ctx, templ_7745c5c3_Var3), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, " ")
 | 
					 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			templ_7745c5c3_Var10 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
				templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
				templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
				if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
					defer func() {
 | 
					 | 
				
			||||||
						templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}()
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
				for i, file := range files {
 | 
					 | 
				
			||||||
					templ_7745c5c3_Var11 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
						templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
						templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
						if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
							defer func() {
 | 
					 | 
				
			||||||
								templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
								if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
									templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}()
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
						templ_7745c5c3_Var12 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
							if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
								defer func() {
 | 
					 | 
				
			||||||
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
									if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}()
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<a href=\"")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var13 templ.SafeURL = templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var13)))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\">")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var14 string
 | 
					 | 
				
			||||||
							templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", i))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileList.templ`, Line: 34, Col: 33}
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</a>")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							return nil
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var12), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, " ")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Var15 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
							if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
								defer func() {
 | 
					 | 
				
			||||||
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
									if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}()
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<a href=\"")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var16 templ.SafeURL = templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var16)))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\">")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var17 string
 | 
					 | 
				
			||||||
							templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(file.Name)
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileList.templ`, Line: 39, Col: 22}
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</a>")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							return nil
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var15), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, " ")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Var18 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
							if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
								defer func() {
 | 
					 | 
				
			||||||
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
									if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}()
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<a href=\"")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var19 templ.SafeURL = templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var19)))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var20 string
 | 
					 | 
				
			||||||
							templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", file.Size))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileList.templ`, Line: 44, Col: 41}
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</a>")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							return nil
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var18), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, " ")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Var21 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
							if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
								defer func() {
 | 
					 | 
				
			||||||
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
									if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}()
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<a href=\"")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var22 templ.SafeURL = templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var22)))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\">")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var23 string
 | 
					 | 
				
			||||||
							templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(file.Created.Time.Format("2006-01-02 15:04:05 MST"))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileList.templ`, Line: 49, Col: 64}
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</a>")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							return nil
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var21), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, " ")
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						templ_7745c5c3_Var24 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
					 | 
				
			||||||
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
					 | 
				
			||||||
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
					 | 
				
			||||||
							if !templ_7745c5c3_IsBuffer {
 | 
					 | 
				
			||||||
								defer func() {
 | 
					 | 
				
			||||||
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
									if templ_7745c5c3_Err == nil {
 | 
					 | 
				
			||||||
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}()
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							ctx = templ.InitializeContext(ctx)
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<a href=\"")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var25 templ.SafeURL = templ.SafeURL(fmt.Sprintf("/files/%s", file.ID.String()))
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var25)))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\">")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							var templ_7745c5c3_Var26 string
 | 
					 | 
				
			||||||
							templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(file.ID.String())
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileList.templ`, Line: 54, Col: 29}
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</a>")
 | 
					 | 
				
			||||||
							if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
								return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
							return nil
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
						templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var24), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
						return nil
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					templ_7745c5c3_Err = table.Row().Render(templ.WithChildren(ctx, templ_7745c5c3_Var11), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				return nil
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
			templ_7745c5c3_Err = table.Body().Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			return nil
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		templ_7745c5c3_Err = table.Table().Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
		if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
			return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _ = templruntime.GeneratedTemplate
 | 
					 | 
				
			||||||
| 
						 | 
					@ -11,14 +11,8 @@ import (
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func IndexWebHandler(w http.ResponseWriter, r *http.Request) {
 | 
					func IndexWebHandler(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	files, err := database.GetAllFiles()
 | 
						component := Index()
 | 
				
			||||||
	if err != nil {
 | 
						err := component.Render(r.Context(), w)
 | 
				
			||||||
		slog.Error("Error in IndexWebHandler", "error", err)
 | 
					 | 
				
			||||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	component := Index(files)
 | 
					 | 
				
			||||||
	err = component.Render(r.Context(), w)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		slog.Error("Error rendering in IndexWebHandler", "error", err)
 | 
							slog.Error("Error rendering in IndexWebHandler", "error", err)
 | 
				
			||||||
		http.Error(w, err.Error(), http.StatusBadRequest)
 | 
							http.Error(w, err.Error(), http.StatusBadRequest)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,17 +9,11 @@ import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
templ Index(files []sqlc.File) {
 | 
					templ Index() {
 | 
				
			||||||
  @Base("Scanfile") {
 | 
					  @Base("Scanfile") {
 | 
				
			||||||
 | 
					 | 
				
			||||||
  <div class="grid grid-cols-2 gap-4">
 | 
					 | 
				
			||||||
  <div class="w-full max-w-sm">
 | 
					  <div class="w-full max-w-sm">
 | 
				
			||||||
    @UploadCard()
 | 
					    @UploadCard()
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <div class="grow">
 | 
					 | 
				
			||||||
    @FileList(files)
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ import (
 | 
				
			||||||
	"git.jmbit.de/jmb/scanfile/server/web/templui/components/input"
 | 
						"git.jmbit.de/jmb/scanfile/server/web/templui/components/input"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Index(files []sqlc.File) templ.Component {
 | 
					func Index() templ.Component {
 | 
				
			||||||
	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
						return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 | 
							if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ func Index(files []sqlc.File) templ.Component {
 | 
				
			||||||
				}()
 | 
									}()
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			ctx = templ.InitializeContext(ctx)
 | 
								ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"grid grid-cols-2 gap-4\"><div class=\"w-full max-w-sm\">")
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"w-full max-w-sm\">")
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -58,15 +58,7 @@ func Index(files []sqlc.File) templ.Component {
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</div><div class=\"grow\">")
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</div>")
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			templ_7745c5c3_Err = FileList(files).Render(ctx, templ_7745c5c3_Buffer)
 | 
					 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
					 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</div></div>")
 | 
					 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -137,7 +129,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
						}()
 | 
											}()
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					ctx = templ.InitializeContext(ctx)
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "Upload File")
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "Upload File")
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -153,7 +145,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " ")
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " ")
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -169,7 +161,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
					}()
 | 
										}()
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				ctx = templ.InitializeContext(ctx)
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<form class=\"flex flex-col gap-4\" hx-encoding=\"multipart/form-data\" hx-post=\"/upload\" hx-target=\"#upload-card\">")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<form class=\"flex flex-col gap-4\" hx-encoding=\"multipart/form-data\" hx-post=\"/upload\" hx-target=\"#upload-card\">")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -185,7 +177,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
						}()
 | 
											}()
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					ctx = templ.InitializeContext(ctx)
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<div class=\"w-full max-w-sm grid gap-2\">")
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<div class=\"w-full max-w-sm grid gap-2\">")
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -201,7 +193,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
							}()
 | 
												}()
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
											ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "File")
 | 
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "File")
 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
| 
						 | 
					@ -221,7 +213,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</div>")
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</div>")
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -255,7 +247,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
							}()
 | 
												}()
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						ctx = templ.InitializeContext(ctx)
 | 
											ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
						templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "Submit")
 | 
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "Submit")
 | 
				
			||||||
						if templ_7745c5c3_Err != nil {
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
							return templ_7745c5c3_Err
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
| 
						 | 
					@ -271,7 +263,7 @@ func UploadCard() templ.Component {
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</form>")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</form>")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -348,7 +340,7 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
						}()
 | 
											}()
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					ctx = templ.InitializeContext(ctx)
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "Upload Successful")
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "Upload Successful")
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -358,7 +350,7 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, " ")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, " ")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -374,14 +366,14 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
						}()
 | 
											}()
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					ctx = templ.InitializeContext(ctx)
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "Name: ")
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "Name: ")
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					var templ_7745c5c3_Var17 string
 | 
										var templ_7745c5c3_Var17 string
 | 
				
			||||||
					templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(file.Name)
 | 
										templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(file.Name)
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/index.templ`, Line: 68, Col: 27}
 | 
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/index.templ`, Line: 62, Col: 27}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
 | 
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
| 
						 | 
					@ -399,7 +391,7 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " ")
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, " ")
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -415,33 +407,33 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
					}()
 | 
										}()
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				ctx = templ.InitializeContext(ctx)
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<div class=\"flex flex-col gap-4\" hx-encoding=\"multipart/form-data\" hx-post=\"/upload\"><p>ID:   ")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<div class=\"flex flex-col gap-4\" hx-encoding=\"multipart/form-data\" hx-post=\"/upload\"><p>ID:   ")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				var templ_7745c5c3_Var19 string
 | 
									var templ_7745c5c3_Var19 string
 | 
				
			||||||
				templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(file.ID.String())
 | 
									templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(file.ID.String())
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/index.templ`, Line: 74, Col: 37}
 | 
										return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/index.templ`, Line: 68, Col: 37}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
 | 
									_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</p><p>Size: ")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</p><p>Size: ")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				var templ_7745c5c3_Var20 string
 | 
									var templ_7745c5c3_Var20 string
 | 
				
			||||||
				templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(file.Size)
 | 
									templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(file.Size)
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/index.templ`, Line: 75, Col: 30}
 | 
										return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/index.templ`, Line: 69, Col: 30}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
 | 
									_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, " Bytes</p>")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, " Bytes</p>")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -457,7 +449,7 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
						}()
 | 
											}()
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					ctx = templ.InitializeContext(ctx)
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
					templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "Go to file")
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "Go to file")
 | 
				
			||||||
					if templ_7745c5c3_Err != nil {
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
						return templ_7745c5c3_Err
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
| 
						 | 
					@ -467,7 +459,7 @@ func UploadSuccessCard(file sqlc.File) templ.Component {
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</div>")
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</div>")
 | 
				
			||||||
				if templ_7745c5c3_Err != nil {
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue