text: from chalicelib.utils import pg_client
  from chalicelib.utils import helper
  from decouple import config
  from chalicelib.utils.TimeUTC import TimeUTC
  
  
  def get_all(user_id):
      with pg_client.PostgresClient() as cur:
          query = cur.mogrify("""
          SELECT a.*, u.last >= (EXTRACT(EPOCH FROM a.created_at)*1000) AS viewed
          FROM public.announcements AS a,
               (SELECT COALESCE(CAST(data ->> 'lastAnnouncementView' AS bigint), 0)
                FROM public.users
                WHERE user_id = %(userId)s
                LIMIT 1) AS u(last)
          ORDER BY a.created_at DESC;""",
                              {"userId": user_id})
          cur.execute(
              query
          )
          announcements = helper.list_to_camel_case(cur.fetchall())
          for a in announcements:
              a["createdAt"] = TimeUTC.datetime_to_timestamp(a["createdAt"])
              if a["imageUrl"] is not None and len(a["imageUrl"]) > 0:
                  a["imageUrl"] = config("announcement_url") + a["imageUrl"]
          return announcements
  
  
  def view(user_id):
      with pg_client.PostgresClient() as cur:
          query = cur.mogrify("""
          UPDATE public.users
          SET data=data ||
                   ('{"lastAnnouncementView":' ||
                    (EXTRACT(EPOCH FROM timezone('utc'::text, now())) * 1000)::bigint - 20 * 000 ||
                    '}')::jsonb
          WHERE user_id = %(userId)s;""",
                              {"userId": user_id})
          cur.execute(
              query
          )
      return True
  