1- use crate :: dynamo:: { as_map , as_string, as_string_opt} ;
1+ use crate :: dynamo:: { as_string, as_string_opt} ;
22use aws_sdk_dynamodb:: types:: { AttributeValue , KeysAndAttributes } ;
33use http:: StatusCode ;
44use lambda_http:: tracing:: { error, info} ;
55use serde:: { Deserialize , Serialize } ;
66use std:: collections:: HashMap ;
77use twilight_model:: id:: Id ;
88use twilight_model:: id:: marker:: GuildMarker ;
9- use twilight_model:: util:: ImageHash ;
109use crate :: discord:: ise;
1110use crate :: guilds:: verify:: models:: Verify ;
1211use crate :: guilds:: votes:: models:: Vote ;
@@ -16,8 +15,6 @@ pub struct Guild {
1615 pub guild_id : Id < GuildMarker > ,
1716 pub verify : Verify ,
1817 pub vote : Vote ,
19- pub name : String ,
20- pub icon : Option < ImageHash > ,
2118}
2219
2320impl Default for Guild {
@@ -26,8 +23,6 @@ impl Default for Guild {
2623 guild_id : Id :: new ( 1 ) ,
2724 verify : Verify { roles : vec ! [ ] , user_links : HashMap :: new ( ) } ,
2825 vote : Vote :: default ( ) ,
29- name : "" . to_string ( ) ,
30- icon : None ,
3126 }
3227 }
3328}
@@ -39,10 +34,8 @@ impl From<&HashMap<String, AttributeValue>> for Guild {
3934 . parse :: < u64 > ( )
4035 . map ( Id :: new)
4136 . unwrap ( ) ,
42- verify : as_map ( item. get ( "verify" ) ) . unwrap ( ) . into ( ) ,
43- vote : as_string_opt ( item. get ( "vote" ) ) . map ( |v| serde_json:: from_str ( & * v) . unwrap ( ) ) . unwrap_or_default ( ) ,
44- name : as_string ( item. get ( "name" ) , & "" . to_string ( ) ) ,
45- icon : as_string_opt ( item. get ( "icon" ) ) . and_then ( |s| ImageHash :: parse ( s. as_bytes ( ) ) . ok ( ) ) ,
37+ verify : as_string_opt ( item. get ( "verify" ) ) . map ( |v| serde_json:: from_str ( & * v) . unwrap_or_default ( ) ) . unwrap_or_default ( ) ,
38+ vote : as_string_opt ( item. get ( "vote" ) ) . map ( |v| serde_json:: from_str ( & * v) . unwrap_or_default ( ) ) . unwrap_or_default ( ) ,
4639 }
4740 }
4841}
@@ -51,12 +44,8 @@ impl From<Guild> for HashMap<String, AttributeValue> {
5144 fn from ( guild : Guild ) -> Self {
5245 let mut item = HashMap :: new ( ) ;
5346 item. insert ( "guild_id" . to_string ( ) , AttributeValue :: S ( guild. guild_id . to_string ( ) ) ) ;
54- item. insert ( "verify" . to_string ( ) , AttributeValue :: M ( guild. verify . into ( ) ) ) ;
47+ item. insert ( "verify" . to_string ( ) , AttributeValue :: S ( serde_json :: to_string ( & guild. verify ) . unwrap ( ) ) ) ;
5548 item. insert ( "vote" . to_string ( ) , AttributeValue :: S ( serde_json:: to_string ( & guild. vote ) . unwrap ( ) ) ) ;
56- item. insert ( "name" . to_string ( ) , AttributeValue :: S ( guild. name ) ) ;
57- if let Some ( icon) = guild. icon {
58- item. insert ( "icon" . to_string ( ) , AttributeValue :: S ( icon. to_string ( ) ) ) ;
59- }
6049
6150 item
6251 }
@@ -87,13 +76,12 @@ impl Guild {
8776 . send ( )
8877 . await
8978 . map_err ( ise)
90- . map ( |resp| {
91- let item = resp. item . unwrap_or_default ( ) ;
92- info ! ( "before map to guild" ) ;
93- let guild: Guild = ( & item) . into ( ) ;
94- info ! ( "after map to guild" ) ;
95- guild
96- } ) {
79+ . map ( |resp|
80+ match resp. item {
81+ Some ( item) => Guild :: from ( & item) ,
82+ None => Guild { guild_id, ..Default :: default ( ) }
83+ }
84+ ) {
9785 Ok ( guild) => Some ( guild) ,
9886 Err ( e) => {
9987 error ! ( "Error fetching guild from DynamoDB: {}" , e) ;
0 commit comments