*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/196|#196> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/191|#191> *:pick: 變更內容 / Details of Changes* 增加 smtp provider
#203 feat: forward article usecase & repository
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/154|#154> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/66|#66> • <https://github.com/Ptt-official-app/Ptt-backend/issues/152|#152> • <https://github.com/Ptt-official-app/Ptt-backend/issues/153|#153> *:pick: 變更內容 / Details of Changes* • add forward article usecase • add forward article repository
*:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/go-bbs/issues/83|#83> *:pick: 變更內容 / Details of Changes* • 在 bbs.go 中新增 WriteArticleConnector、NewArticleRecord、AddArticleRecordFileRecord • 新增 pttbbs/pttbbs_write_article_connector.go • 在 pttbbs/file.go 中新增 AppendFileHeaderFileRecord、NewFileRecord,其中比較不確定或是尚未實作的部分都有加上註解 • 在 pttbbs/file_test.go 中新增 TestAppendFileHeaderFileRecord、TestAppendFileHeaderFileRecordWithError
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/180|#180> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/180|#180> • <https://github.com/Ptt-official-app/Ptt-backend/issues/68|#68> *:pick: 變更內容 / Details of Changes* • usecase function `checkPermission` 新增傳入參數 context • 新增 checkPermission 關於發文的部份邏輯 • 新增 repo CreateArticle function
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/167|#167> *:pick: 變更內容 / Details of Changes* • `GetUserDrafts`與`UpdateUserDraft`改傳回自定義的`UserDraft`,這需要在go-bbs內被實作 • 在`MockUsercase`與`MockRepository`新增`MockUserDraft` 以mock`UserDraft` *注意* • 目前`MockUserDraft` 是兩邊各定義相同的struct,之後可能要統一呼叫repo的
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/78|#78> *:pick: 變更內容 / Details of Changes* • 新增 pttbbs/usersettings.go 與 pttbbs/usersettings_test.go 檔案 • 在 pttbbs/const.go 新增 uflags • 在 bbs.go 的 UserRecord interface 中新增 UserFlag() • 在 pttbbs/passwd.go 中修改 Userec struct 的 userFlag (原為 UserFlag) • 在 pttbbs/passwd_test.go 中修改所有 UserFlag 成為 userFlag • 在 serverlet/route_users_test.go 中新增 UserFlag() function
*實作細節 / Details of Implement* • 基本上實作是參考 <https://github.com/Ptt-official-app/go-bbs/issues/64|#64> • 這個功能需要能夠掃瞄所有看板的所有文章,並列舉出所有屬於某個使用者的留言 • 因目前還未實作推文的功能,所以暫時的做法是透過 ReadBoardArticleFile 讀出文章內容後,判斷內容是否有包含使用者ID,有的話視為此使用者有留言。加上 TODO 之後再另起 issue 修改 • 新增 user_comment_record.go,定義 UserCommentRecord interface,至少實作以下 function • CommentOrder() int // 評論順序,從1開始,在 PTT 代表是幾樓的意思 • CommentTime() time.Time // 評論時間,發出推文的時間 • 在 bbs.go 新增 UserCommentConnector interface,實作以下 function • GetUserCommentRecordsPath(userID string) (string, error) // 取得儲放歷史留言快取資料庫的路徑 • ReadUserCommentRecordFile(name string) ([]UserCommentRecord, error) // 讀取快取資料,並輸出為[]UserCommentRecord • 在 bbs.go 新增 func (db *DB) GetUserCommentRecordFile(userID string) ([]UserCommentRecord, error) • 參考 <https://github.com/Ptt-official-app/go-bbs/blob/0a4883fa41988439603d95007d3ea25df682fddb/bbs.go#L399|GetUserArticleRecordFile>,先讀取快取資料庫的內容,若無資料則重新從所有看板的所有文章撈取。因目前沒有 comment_order 與 comment_time 的資料,可先回傳 empty value,再標記 TODO *期程 / Schedule* (希望這個任務大概什麼時候做完,如果會卡到其他地方的功能也請在這邊提出。) • 討論時間: 一週, 到 5/17 • 實作時間: 一週, 到 5/24 • 確認時間: 一週, 到 5/31 *相關文件 / Documents* • <https://github.com/Ptt-official-app/go-bbs/issues/64|#64> • <https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k/edit#heading=h.xtgbc6lc04uw|API文件>
*:clap: 解決掉的 issue / Resolved Issues* *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/7|#7> • <https://github.com/Ptt-official-app/Ptt-backend/pull/124|#124> *:pick: 變更內容 / Details of Changes* • 補完 <https://github.com/Ptt-official-app/Ptt-backend/pull/124|#124> • 針對 ServeMux, gorillamux, httprouter 補上 benchmark
feat: forward article usecase & repository 想問大家這樣的方向對不對,或者哪裡還需要補的? <https://github.com/Ptt-official-app/Ptt-backend/pull/203>
*:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/go-bbs/issues/83|#83> *:pick: 變更內容 / Details of Changes* • 在 bbs.go 中新增 WriteArticleConnector、NewArticleRecord、AddArticleRecordFileRecord • 新增 pttbbs/pttbbs_write_article_connector.go、pttbbs/pttbbs_write_article_connector.go • 在 pttbbs/file.go 中新增 AppendFileHeaderFileRecord,其中尚未實作的部分有加上註解 • 在 pttbbs/file_test.go 中新增 TestAppendFileHeaderFileRecord
#207 feat: Implement mailgun provider
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/Ptt-backend/issues/197|#197> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/Ptt-backend/issues/191|#191> *:pick: 變更內容 / Details of Changes* • `mail.go` - 新增 case 呼叫新增 mailgun provider • `mail_test.go` - 新增兩個測試關於 `NewMailProvider()` • `mailgun.go` - mailgun provider 實作 • `mailgun_test.go` - 測試 mailgun provider *其他* 關於 mailgun provider test,我是用自己起一個 https server 的作法去測,這樣 Send 成功以及失敗就都可以被測到。 測試成功的部份有在 handler function 裡面對 request 做一些檢查,如果覺得這個部分不需要,其實也可以拿掉。 另外我新增了 `mail_test.go` 的想法是覺得 `NewMailProvider()` 裡面的邏輯 應該是要在這個 test file 裡面驗證。
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/86|#86> *:memo: 相關的 issue / Related Issues* • <https://github.com/Ptt-official-app/go-bbs/issues/86|#86> *:pick: 變更內容 / Details of Changes* • 新增 user_comment_record.go • NewUserCommentRecord 可判斷傳入的資料是否符合留言的格式,並從符合格式的資料中擷取留言者與時間。 • 新增 ansi.go • 小工具可以將 ANSI escape code 移除。 • 修改 bbs.go • 新增 UserCommentConnector interface 處理個人留言的快取(未實作細節)。 • 新增 GetUserCommentRecordFile method 從所有開板中找出使用者的歷史留言。 • 新增 GetBoardUserCommentRecord method 從特定看板中找出使用者的歷史留言。 • 新增 GetBoardArticleCommentRecords method 從特定文章中找出所有使用者的留言。 • 新增 bbs_test.go 利用 fakeConnector 模擬實際存取檔案的功能,藉此完成 DB 邏輯的測試。
#208 [主線] [PTT] End To End Test millstone1
*實作細節 / Details of Implement* 目前有幾個想法實做測試 1. 手動測試 - 最簡單,但難重現 2. postman test - 最難,但不需要用 golang,使用類 js 語言開發 3. golang test - 使用 http/curl 實做,可以整合進 ci 我會先實做一個 golang 的 e2e 測試供大家參考,大家可以下方討論有沒有更好的作法 *期程 / Schedule* • 討論時間:一週 • 實作時間: 未定 • 確認時間: 未定 *相關文件 / Documents* <https://docs.google.com/spreadsheets/d/1uo4AJuSi5xTXEht2o2EHogLivCJlJqlLaeqoj1RceDY/edit#gid=0|測試表>
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/78|#78> *:pick: 變更內容 / Details of Changes* • 新增 pttbbs/usersettings.go 與 pttbbs/usersettings_test.go 檔案 • 在 pttbbs/const.go 新增 uflags • 在 bbs.go 的 UserRecord interface 中新增 UserFlag() • 在 pttbbs/passwd.go 中修改 Userec struct 的 userFlag (原為 UserFlag) • 在 pttbbs/passwd_test.go 中修改所有 UserFlag 成為 userFlag • 在 serverlet/route_users_test.go 中新增 UserFlag() function
*實作細節 / Details of Implement* Quote from Pichu: > 在放入 user01 Access Token 的情況下,發出一篇文章,user02 可以用 > 「↑」進行推文,評價數要加一,user02第二次用 ↑ 推文時評價數不變 接著user02 用 > 「↓」推文時原先的上箭頭推文被刪去,評價數減一(收回),第二次用 ↓ 推文時評價數減一,第三次用↓推文時評價數不變 > 在放入 user01 Access Token 的情況下,發出一篇文章,user01 用 「↑」進行推文,評價數不變 (自己不能推自己) • 修改`usecase /article.go` • 增加類似`UpdateUsefulness` function,以模仿stackoverflow或reddit • 在`repository/article.go`中新增`Usefulness` struct,與後端`gobbs`對接 • 在`delivery/http`新增`route_update_usefulness.go`處理http routing • 可能會有權限問題需要處理 • 對應測試需要撰寫 *期程 / Schedule* • 討論時間: 兩周 • 實作時間: 兩周 • 確認時間: 兩周 *備註* • 目前Google doc那裏還沒更新 • 子issue需要協助開立
#88 Feature/#82 do_add_recommend
*:clap: 解決掉的 issue / Resolved Issues* • close <https://github.com/Ptt-official-app/go-bbs/issues/82|#82> *:pick: 變更內容 / Details of Changes* • xxxxxx • xxx