14-cleanup #15
| @ -237,3 +237,11 @@ func (app *application) deleteGuestbookComment(w http.ResponseWriter, r *http.Re | ||||
| 		app.serverError(w, r, err) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (app *application) getAllGuestbooks(w http.ResponseWriter, r *http.Request) { | ||||
| 	websites, err := app.websites.GetAll() | ||||
| 	if err != nil { | ||||
| 		app.serverError(w, r, err) | ||||
| 	} | ||||
| 	views.AllGuestbooksView(app.newCommonData(r), websites).Render(r.Context(), w) | ||||
| } | ||||
|  | ||||
| @ -82,7 +82,7 @@ func (app *application) getWebsiteDashboard(w http.ResponseWriter, r *http.Reque | ||||
| func (app *application) getWebsiteList(w http.ResponseWriter, r *http.Request) { | ||||
| 
 | ||||
| 	userId := app.sessionManager.GetInt64(r.Context(), "authenticatedUserId") | ||||
| 	websites, err := app.websites.GetAll(userId) | ||||
| 	websites, err := app.websites.GetAllUser(userId) | ||||
| 	if err != nil { | ||||
| 		app.serverError(w, r, err) | ||||
| 		return | ||||
|  | ||||
| @ -30,6 +30,7 @@ func (app *application) routes() http.Handler { | ||||
| 	mux.Handle("POST /users/logout", protected.ThenFunc(app.postUserLogout)) | ||||
| 	mux.Handle("GET /users/settings", protected.ThenFunc(app.notImplemented)) | ||||
| 	mux.Handle("GET /users/privacy", protected.ThenFunc(app.notImplemented)) | ||||
| 	mux.Handle("GET /guestbooks", protected.ThenFunc(app.getAllGuestbooks)) | ||||
| 
 | ||||
| 	mux.Handle("GET /websites", protected.ThenFunc(app.getWebsiteList)) | ||||
| 	mux.Handle("GET /websites/create", protected.ThenFunc(app.getWebsiteCreate)) | ||||
|  | ||||
| @ -65,7 +65,7 @@ func (m *WebsiteModel) GetById(id int64) (Website, error) { | ||||
| 	return w, nil | ||||
| } | ||||
| 
 | ||||
| func (m *WebsiteModel) GetAll(userId int64) ([]Website, error) { | ||||
| func (m *WebsiteModel) GetAllUser(userId int64) ([]Website, error) { | ||||
| 	stmt := `SELECT w.Id, w.ShortId, w.Name, w.SiteUrl, w.AuthorName, w.UserId, w.Created,  | ||||
| 	g.Id, g.ShortId, g.Created, g.IsActive | ||||
| 	FROM websites AS w INNER JOIN guestbooks AS g ON w.Id = g.WebsiteId | ||||
| @ -89,3 +89,27 @@ func (m *WebsiteModel) GetAll(userId int64) ([]Website, error) { | ||||
| 	} | ||||
| 	return websites, nil | ||||
| } | ||||
| 
 | ||||
| func (m *WebsiteModel) GetAll() ([]Website, error) { | ||||
| 	stmt := `SELECT w.Id, w.ShortId, w.Name, w.SiteUrl, w.AuthorName, w.UserId, w.Created,  | ||||
| 	g.Id, g.ShortId, g.Created, g.IsActive | ||||
| 	FROM websites AS w INNER JOIN guestbooks AS g ON w.Id = g.WebsiteId` | ||||
| 	rows, err := m.DB.Query(stmt) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	var websites []Website | ||||
| 	for rows.Next() { | ||||
| 		var w Website | ||||
| 		err := rows.Scan(&w.ID, &w.ShortId, &w.Name, &w.SiteUrl, &w.AuthorName, &w.UserId, &w.Created, | ||||
| 			&w.Guestbook.ID, &w.Guestbook.ShortId, &w.Guestbook.Created, &w.Guestbook.IsActive) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		websites = append(websites, w) | ||||
| 	} | ||||
| 	if err = rows.Err(); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return websites, nil | ||||
| } | ||||
|  | ||||
| @ -36,6 +36,7 @@ templ topNav(data CommonData) { | ||||
|         </div> | ||||
|         <div> | ||||
|             if data.IsAuthenticated { | ||||
|                 <a href="/guestbooks">All Guestbooks</a> | | ||||
|                 <a href="/websites">My Websites</a> |  | ||||
|                 <a href="/users/settings">Settings</a> |  | ||||
|                 <form action="/users/logout" method="post"> | ||||
|  | ||||
| @ -103,14 +103,14 @@ func topNav(data CommonData) templ.Component { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		if data.IsAuthenticated { | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<a href=\"/websites\">My Websites</a> |  <a href=\"/users/settings\">Settings</a> | <form action=\"/users/logout\" method=\"post\"><input type=\"hidden\" name=\"csrf_token\" value=\"") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<a href=\"/guestbooks\">All Guestbooks</a> | <a href=\"/websites\">My Websites</a> |  <a href=\"/users/settings\">Settings</a> | <form action=\"/users/logout\" method=\"post\"><input type=\"hidden\" name=\"csrf_token\" value=\"") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			var templ_7745c5c3_Var4 string | ||||
| 			templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(data.CSRFToken) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 42, Col: 81} | ||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 43, Col: 81} | ||||
| 			} | ||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| @ -191,7 +191,7 @@ func base(title string, data CommonData) templ.Component { | ||||
| 		var templ_7745c5c3_Var7 string | ||||
| 		templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(title) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 65, Col: 26} | ||||
| 			return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 66, Col: 26} | ||||
| 		} | ||||
| 		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| @ -221,7 +221,7 @@ func base(title string, data CommonData) templ.Component { | ||||
| 			var templ_7745c5c3_Var8 string | ||||
| 			templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(data.Flash) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 76, Col: 51} | ||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/common.templ`, Line: 77, Col: 51} | ||||
| 			} | ||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| <nav><div> | ||||
| Welcome,  | ||||
| </div><div> | ||||
| <a href=\"/websites\">My Websites</a> |  <a href=\"/users/settings\">Settings</a> | <form action=\"/users/logout\" method=\"post\"><input type=\"hidden\" name=\"csrf_token\" value=\" | ||||
| <a href=\"/guestbooks\">All Guestbooks</a> | <a href=\"/websites\">My Websites</a> |  <a href=\"/users/settings\">Settings</a> | <form action=\"/users/logout\" method=\"post\"><input type=\"hidden\" name=\"csrf_token\" value=\" | ||||
| \"> <button>Logout</button></form> | ||||
| <a href=\"/users/register\">Create an Account</a> |  <a href=\"/users/login\">Login</a> | ||||
| </div></nav> | ||||
|  | ||||
| @ -158,3 +158,22 @@ templ GuestbookDashboardCommentView(data CommonData, w models.Website, c models. | ||||
|         </p> | ||||
|     </div> | ||||
| } | ||||
| 
 | ||||
| templ AllGuestbooksView(data CommonData, websites []models.Website) { | ||||
|     @base("All Guestbooks", data) { | ||||
|         <div> | ||||
|             <h1>All Guestbooks</h1> | ||||
|             <p> | ||||
|                 This page exists only for testing the service. | ||||
|             </p> | ||||
|             <ul> | ||||
|                 for _, w := range websites { | ||||
|                     <li> | ||||
|                         {{  gbUrl := fmt.Sprintf("/websites/%s/guestbook", shortIdToSlug(w.ShortId))}} | ||||
|                         <a href={ templ.URL(gbUrl) } target="_blank">{ w.Name }</a> | ||||
|                     </li> | ||||
|                 } | ||||
|             </ul> | ||||
|         </div> | ||||
|     } | ||||
| } | ||||
| @ -752,4 +752,88 @@ func GuestbookDashboardCommentView(data CommonData, w models.Website, c models.G | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func AllGuestbooksView(data CommonData, websites []models.Website) 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_Var36 := templ.GetChildren(ctx) | ||||
| 		if templ_7745c5c3_Var36 == nil { | ||||
| 			templ_7745c5c3_Var36 = templ.NopComponent | ||||
| 		} | ||||
| 		ctx = templ.ClearChildren(ctx) | ||||
| 		templ_7745c5c3_Var37 := 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, 56, "<div><h1>All Guestbooks</h1><p>This page exists only for testing the service.</p><ul>") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			for _, w := range websites { | ||||
| 				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<li>") | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ_7745c5c3_Err | ||||
| 				} | ||||
| 				gbUrl := fmt.Sprintf("/websites/%s/guestbook", shortIdToSlug(w.ShortId)) | ||||
| 				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<a href=\"") | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ_7745c5c3_Err | ||||
| 				} | ||||
| 				var templ_7745c5c3_Var38 templ.SafeURL = templ.URL(gbUrl) | ||||
| 				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var38))) | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ_7745c5c3_Err | ||||
| 				} | ||||
| 				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\" target=\"_blank\">") | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ_7745c5c3_Err | ||||
| 				} | ||||
| 				var templ_7745c5c3_Var39 string | ||||
| 				templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(w.Name) | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/guestbooks.templ`, Line: 173, Col: 77} | ||||
| 				} | ||||
| 				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39)) | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ_7745c5c3_Err | ||||
| 				} | ||||
| 				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</a></li>") | ||||
| 				if templ_7745c5c3_Err != nil { | ||||
| 					return templ_7745c5c3_Err | ||||
| 				} | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</ul></div>") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			return nil | ||||
| 		}) | ||||
| 		templ_7745c5c3_Err = base("All Guestbooks", data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		return nil | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| var _ = templruntime.GeneratedTemplate | ||||
|  | ||||
| @ -53,3 +53,9 @@ Hide | ||||
| </a> | ||||
| <p> | ||||
| </p></div> | ||||
| <div><h1>All Guestbooks</h1><p>This page exists only for testing the service.</p><ul> | ||||
| <li> | ||||
| <a href=\" | ||||
| \" target=\"_blank\"> | ||||
| </a></li> | ||||
| </ul></div> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user