├── .commitlintrc.js
├── .credo.exs
├── .dialyzer_ignore.exs
├── .github
└── workflows
│ └── ci.yml
├── .gitignore
├── .iex.exs
├── CHANGELOG.md
├── LICENSE
├── Makefile
├── Makefile.include.mk
├── README.md
├── README.zh-CN.md
├── config
├── ci.exs
├── config.exs
├── dev.exs
├── mock.exs
├── prod.exs
└── test.exs
├── cover
└── excoveralls.json
├── deploy
├── dev
│ ├── Dockerfile
│ ├── api_server.tar.gz
│ ├── index.html
│ ├── loader.sh
│ └── packer.sh
└── production
│ ├── Dockerfile
│ ├── api_server.tar.gz
│ ├── index.html
│ ├── loader.sh
│ └── packer.sh
├── docs
├── FAQ.md
├── README.md
├── analysis
│ ├── apollo-engine.md
│ ├── apollo-engine.zh-CN.md
│ ├── error-tracking.md
│ └── error-tracking.zh-CN.md
├── architecture
│ ├── graphql.md
│ ├── graphql.zh-CN.md
│ ├── intro.md
│ └── intro.zh-CN.md
├── ci
│ ├── commit-msg-lint.md
│ ├── commit-msg-lint.zh-CN.md
│ ├── doc-coverage.md
│ ├── intro.md
│ ├── intro.zh-CN.md
│ ├── schema-check.md
│ ├── schema-check.zh-CN.md
│ ├── test-coverage.md
│ └── test-coverage.zh-CN.md
├── contributing.md
├── contributing.zh-CN.md
├── deployment
│ ├── intro.md
│ ├── intro.zh-CN.md
│ ├── release.md
│ └── release.zh-CN.md
├── development
│ ├── console.md
│ ├── console.zh-CN.md
│ ├── generator.md
│ ├── generator.zh-CN.md
│ ├── intro.md
│ ├── intro.zh-CN.md
│ ├── linter.md
│ ├── linter.zh-CN.md
│ ├── setup.md
│ └── setup.zh-CN.md
├── roadmap.md
├── snapshots
│ ├── apollo-explorer.png
│ ├── apollo-metrics.png
│ ├── cps_logo_md.png
│ └── deployment.png
├── testing
│ ├── graphql-testing.md
│ ├── graphql-testing.zh-CN.md
│ ├── unit-testing.md
│ └── unit-testing.zh-CN.md
├── tips.md
└── troubleshooting.md
├── lib
├── groupher_server.ex
├── groupher_server
│ ├── accounts
│ │ ├── accounts.ex
│ │ ├── delegates
│ │ │ ├── achievements.ex
│ │ │ ├── collect_folder.ex
│ │ │ ├── customization.ex
│ │ │ ├── fans.ex
│ │ │ ├── hooks
│ │ │ │ └── notify.ex
│ │ │ ├── mailbox.ex
│ │ │ ├── profile.ex
│ │ │ ├── publish.ex
│ │ │ ├── search.ex
│ │ │ ├── upvoted_articles.ex
│ │ │ └── utils.ex
│ │ ├── helper
│ │ │ └── loader.ex
│ │ └── models
│ │ │ ├── achievement.ex
│ │ │ ├── collect_folder.ex
│ │ │ ├── customization.ex
│ │ │ ├── education_background.ex
│ │ │ ├── embeds
│ │ │ ├── collect_folder_meta.ex
│ │ │ ├── user_contribute.ex
│ │ │ ├── user_contribute_record.ex
│ │ │ ├── user_mailbox.ex
│ │ │ └── user_meta.ex
│ │ │ ├── github_user.ex
│ │ │ ├── purchase.ex
│ │ │ ├── social.ex
│ │ │ ├── source_contribute.ex
│ │ │ ├── user.ex
│ │ │ ├── user_follower.ex
│ │ │ ├── user_following.ex
│ │ │ └── work_background.ex
│ ├── application.ex
│ ├── billing
│ │ ├── billing.ex
│ │ ├── delegates
│ │ │ ├── actions.ex
│ │ │ └── curd.ex
│ │ └── models
│ │ │ └── bill_record.ex
│ ├── cms
│ │ ├── cms.ex
│ │ ├── constant.ex
│ │ ├── delegates
│ │ │ ├── Seeds
│ │ │ │ ├── categories.ex
│ │ │ │ ├── communities.ex
│ │ │ │ ├── domain.ex
│ │ │ │ ├── helper.ex
│ │ │ │ ├── prod
│ │ │ │ │ └── turning.ex
│ │ │ │ ├── seeds.ex
│ │ │ │ ├── seeds_config.ex
│ │ │ │ ├── tags.ex
│ │ │ │ └── threads.ex
│ │ │ ├── abuse_report.ex
│ │ │ ├── article_collect.ex
│ │ │ ├── article_community.ex
│ │ │ ├── article_curd.ex
│ │ │ ├── article_emotion.ex
│ │ │ ├── article_tag.ex
│ │ │ ├── article_upvote.ex
│ │ │ ├── blog_curd.ex
│ │ │ ├── cited_artiment.ex
│ │ │ ├── comment_action.ex
│ │ │ ├── comment_curd.ex
│ │ │ ├── comment_emotion.ex
│ │ │ ├── community_curd.ex
│ │ │ ├── community_operation.ex
│ │ │ ├── community_sync.ex
│ │ │ ├── document.ex
│ │ │ ├── helper.ex
│ │ │ ├── hooks
│ │ │ │ ├── audition.ex
│ │ │ │ ├── cite.ex
│ │ │ │ ├── helper.ex
│ │ │ │ ├── mention.ex
│ │ │ │ └── notify.ex
│ │ │ ├── passport_curd.ex
│ │ │ ├── search.ex
│ │ │ └── works_curd.ex
│ │ ├── helper
│ │ │ ├── loader.ex
│ │ │ ├── macros.ex
│ │ │ ├── matcher.ex
│ │ │ ├── matcher_macros.ex
│ │ │ └── utils.ex
│ │ └── models
│ │ │ ├── abuse_report.ex
│ │ │ ├── article_collect.ex
│ │ │ ├── article_document.ex
│ │ │ ├── article_tag.ex
│ │ │ ├── article_upvote.ex
│ │ │ ├── article_user_emotion.ex
│ │ │ ├── author.ex
│ │ │ ├── blog.ex
│ │ │ ├── blog_document.ex
│ │ │ ├── blog_rss.ex
│ │ │ ├── category.ex
│ │ │ ├── cited_artiment.ex
│ │ │ ├── city.ex
│ │ │ ├── comment.ex
│ │ │ ├── comment_reply.ex
│ │ │ ├── comment_upvote.ex
│ │ │ ├── comment_user_emotion.ex
│ │ │ ├── community.ex
│ │ │ ├── community_category.ex
│ │ │ ├── community_cheatsheet.ex
│ │ │ ├── community_editor.ex
│ │ │ ├── community_subscriber.ex
│ │ │ ├── community_thread.ex
│ │ │ ├── community_wiki.ex
│ │ │ ├── drink.ex
│ │ │ ├── drink_document.ex
│ │ │ ├── embeds
│ │ │ ├── abuse_report_case.ex
│ │ │ ├── app_store.ex
│ │ │ ├── article_emotion.ex
│ │ │ ├── article_meta.ex
│ │ │ ├── block_task_runner.ex
│ │ │ ├── blog_author.ex
│ │ │ ├── blog_history_feed.ex
│ │ │ ├── comment_emotion.ex
│ │ │ ├── comment_meta.ex
│ │ │ ├── community_meta.ex
│ │ │ ├── reference_task.ex
│ │ │ ├── social_info.ex
│ │ │ └── user.ex
│ │ │ ├── github_contributor.ex
│ │ │ ├── guide.ex
│ │ │ ├── guide_document.ex
│ │ │ ├── job.ex
│ │ │ ├── job_document.ex
│ │ │ ├── meetup.ex
│ │ │ ├── meetup_document.ex
│ │ │ ├── passport.ex
│ │ │ ├── pinned_article.ex
│ │ │ ├── pinned_comment.ex
│ │ │ ├── post.ex
│ │ │ ├── post_comment.ex
│ │ │ ├── post_document.ex
│ │ │ ├── radar.ex
│ │ │ ├── radar_document.ex
│ │ │ ├── repo.ex
│ │ │ ├── repo_contributor.ex
│ │ │ ├── repo_document.ex
│ │ │ ├── repo_lang.ex
│ │ │ ├── techstack.ex
│ │ │ ├── thread.ex
│ │ │ ├── works.ex
│ │ │ └── works_document.ex
│ ├── delivery
│ │ ├── delegates
│ │ │ ├── mention.ex
│ │ │ ├── notification.ex
│ │ │ └── postman.ex
│ │ ├── delivery.ex
│ │ └── models
│ │ │ ├── mention.ex
│ │ │ └── notification.ex
│ ├── logs
│ │ ├── logs.ex
│ │ └── user_activity.ex
│ ├── mailer
│ │ ├── email.ex
│ │ ├── mailer.ex
│ │ └── templates
│ │ │ ├── admin_new_register.ex
│ │ │ ├── mention_author.ex
│ │ │ ├── nofity_admin_register.ex
│ │ │ ├── notify_admin_on_content_created.ex
│ │ │ ├── notify_admin_payment.ex
│ │ │ ├── thanks_donation.ex
│ │ │ └── welcome.ex
│ ├── repo.ex
│ └── statistics
│ │ ├── delegates
│ │ ├── contribute.ex
│ │ ├── geo.ex
│ │ ├── status.ex
│ │ └── throttle.ex
│ │ ├── models
│ │ ├── community_contribute.ex
│ │ ├── publish_throttle.ex
│ │ ├── user_contribute.ex
│ │ └── user_geo_info.ex
│ │ └── statistics.ex
├── groupher_server_web.ex
├── groupher_server_web
│ ├── channels
│ │ └── user_socket.ex
│ ├── context.ex
│ ├── controller
│ │ └── og_controller.ex
│ ├── endpoint.ex
│ ├── gettext.ex
│ ├── middleware
│ │ ├── README.md
│ │ ├── achievement_proof.ex
│ │ ├── authorize.ex
│ │ ├── changeset_errors.ex
│ │ ├── count_length.ex
│ │ ├── covert_to_int.ex
│ │ ├── cut_participators.ex
│ │ ├── debug.ex
│ │ ├── force_loader.ex
│ │ ├── general_error.ex
│ │ ├── github_user.ex
│ │ ├── pagesize_proof.ex
│ │ ├── passport.ex
│ │ ├── passport_loader.ex
│ │ ├── publish_throttle.ex
│ │ ├── put_current_user.ex
│ │ ├── put_root_source.ex
│ │ ├── see_me.ex
│ │ ├── statistics
│ │ │ └── make_contribute.ex
│ │ └── viewer_did_convert.ex
│ ├── resolvers
│ │ ├── accounts_resolver.ex
│ │ ├── billing_resolver.ex
│ │ ├── cms_resolver.ex
│ │ └── statistics_resolver.ex
│ ├── router.ex
│ ├── schema.ex
│ └── schema
│ │ ├── Helper
│ │ ├── fields.ex
│ │ ├── imports.ex
│ │ ├── metrics.ex
│ │ ├── mutations.ex
│ │ ├── objects.ex
│ │ └── queries.ex
│ │ ├── account
│ │ ├── account_metrics.ex
│ │ ├── account_mutations.ex
│ │ ├── account_queries.ex
│ │ └── account_types.ex
│ │ ├── billing
│ │ ├── billing_mutations.ex
│ │ ├── billing_queries.ex
│ │ └── billing_types.ex
│ │ ├── cms
│ │ ├── cms_metrics.ex
│ │ ├── cms_queries.ex
│ │ ├── cms_types.ex
│ │ └── mutations
│ │ │ ├── blog.ex
│ │ │ ├── comment.ex
│ │ │ ├── community.ex
│ │ │ ├── drink.ex
│ │ │ ├── guide.ex
│ │ │ ├── job.ex
│ │ │ ├── meetup.ex
│ │ │ ├── operation.ex
│ │ │ ├── post.ex
│ │ │ ├── radar.ex
│ │ │ ├── repo.ex
│ │ │ └── works.ex
│ │ └── statistics
│ │ ├── statistics_mutations.ex
│ │ ├── statistics_queries.ex
│ │ └── statistics_types.ex
└── helper
│ ├── RSS.ex
│ ├── audit_bot.ex
│ ├── cache.ex
│ ├── certification.ex
│ ├── converter
│ ├── article.ex
│ ├── assets
│ │ └── delimiter_icons.ex
│ ├── chinese_convention.ex
│ ├── editor_to_html
│ │ ├── class.ex
│ │ ├── frags
│ │ │ ├── header.ex
│ │ │ ├── image.ex
│ │ │ ├── list.ex
│ │ │ ├── people.ex
│ │ │ ├── quote.ex
│ │ │ └── table.ex
│ │ ├── frontend_test
│ │ │ ├── index.html
│ │ │ ├── script.js
│ │ │ └── styles.css
│ │ ├── index.ex
│ │ └── validator
│ │ │ ├── editor_schema.ex
│ │ │ └── index.ex
│ ├── editor_to_md.ex
│ ├── html_sanitizer.ex
│ ├── md_to_editor.ex
│ └── mention_parser.ex
│ ├── error_code.ex
│ ├── error_handler.ex
│ ├── geo_pool.ex
│ ├── gql_schema_suite.ex
│ ├── guardian.ex
│ ├── html.ex
│ ├── ip_2_city.ex
│ ├── later.ex
│ ├── nested_filter.ex
│ ├── oauth2
│ └── github.ex
│ ├── orm.ex
│ ├── parse_remote_ip.ex
│ ├── patchs
│ └── accounts_social_migrater.exs
│ ├── plausible.ex
│ ├── public_ip_plug.ex
│ ├── query_builder.ex
│ ├── scheduler.ex
│ ├── types.ex
│ ├── utils
│ ├── map.ex
│ ├── string.ex
│ └── utils.ex
│ └── validator
│ ├── guards.ex
│ ├── schema.ex
│ └── schema_matchers.ex
├── mix.exs
├── mix.lock
├── package-lock.json
├── package.json
├── priv
├── gettext
│ ├── en
│ │ └── LC_MESSAGES
│ │ │ └── errors.po
│ ├── errors.pot
│ └── zh_CN
│ │ └── LC_MESSAGES
│ │ ├── 404.po
│ │ ├── errors.po
│ │ └── fields.po
├── mock
│ ├── articles.exs
│ ├── cms_community_seeds.exs
│ ├── cms_root_seeds.exs
│ ├── community_patch_seeds.exs
│ ├── cps_seeds.exs
│ ├── debug_seeds.exs
│ ├── geo_seeds.exs
│ ├── populator
│ │ ├── cms_comment.ex
│ │ ├── cms_post.ex
│ │ └── user.ex
│ ├── post_comments_seeds.exs
│ ├── prod_category.exs
│ ├── prod_tmp_tuning.exs
│ ├── tag_patch_seeds.exs
│ └── user_contributes_seeds.exs
└── repo
│ └── migrations
│ ├── 20171217042549_create_users.exs
│ ├── 20171217131428_add_users_info.exs
│ ├── 20171223101554_create_cms_posts.exs
│ ├── 20171223110631_create_cms_authors.exs
│ ├── 20171223111152_add_cms_author_id_to_posts.exs
│ ├── 20180115075252_recreate_posts_comments.exs
│ ├── 20180116060746_add_views_to_cms_posts.exs
│ ├── 20180122062720_create_common_tag.exs
│ ├── 20180122084610_create_posts_tags_join_table.exs
│ ├── 20180122235911_create_community.exs
│ ├── 20180123000925_create_communities_posts.exs
│ ├── 20180123002525_add_communities_timestamp.exs
│ ├── 20180123011214_alter_communities_author.exs
│ ├── 20180123031129_alter_tag_community.exs
│ ├── 20180203053909_add_linkaddr_to_posts.exs
│ ├── 20180203064057_add_digest_length_to_posts.exs
│ ├── 20180203091520_create_posts_stars.exs
│ ├── 20180203091848_create_posts_favorites.exs
│ ├── 20180324130829_create_github_users.exs
│ ├── 20180325091016_update_users_info.exs
│ ├── 20180327150232_add_extra_info_to_github_users.exs
│ ├── 20180403012915_create_user_contributes.exs
│ ├── 20180404040216_create_cms_passports.exs
│ ├── 20180404091422_rename_cmspassport_roles.exs
│ ├── 20180410075032_create_community_contribute.exs
│ ├── 20180411032348_create_communities_subscribers.exs
│ ├── 20180412125329_create_community_editors.exs
│ ├── 20180416115537_create_community_thread.exs
│ ├── 20180416121000_create_communites_threads.exs
│ ├── 20180416122540_add_category_to_community.exs
│ ├── 20180416135419_add_unique_to_thread.exs
│ ├── 20180417073924_add_info_to_community.exs
│ ├── 20180417080555_add_raw_to_thread.exs
│ ├── 20180417085106_rename_community_threads_to_threads.exs
│ ├── 20180417131427_remove_old_community_threads_unique_index.exs
│ ├── 20180423061803_add_more_attrs_to_user.exs
│ ├── 20180424143036_replace_user_sex_with_default_value.exs
│ ├── 20180427115725_add_replyto_to_postcomments.exs
│ ├── 20180427125929_create_posts_comments_reply.exs
│ ├── 20180428034143_remove_posts_comments_replies.exs
│ ├── 20180428034521_recreate_posts_comments_replies.exs
│ ├── 20180428132739_create_likes_to_post_comment.exs
│ ├── 20180429092654_create_dislike_to_post_comment.exs
│ ├── 20180505014411_add_floor_to_comments.exs
│ ├── 20180505032006_drop_unique_index_comments_floor.exs
│ ├── 20180522013006_create_categories.exs
│ ├── 20180522014431_create_communites_categories.exs
│ ├── 20180522015232_remove_community_category_column.exs
│ ├── 20180522043027_replace_category_user_by_author.exs
│ ├── 20180522080514_replace_tag_user_by_author.exs
│ ├── 20180523013618_create_cms_jobs.exs
│ ├── 20180523022132_create_communities_jobs.exs
│ ├── 20180524030533_create_jobs_users.exs
│ ├── 20180524032915_create_jobs_favorites.exs
│ ├── 20180524034625_create_jobs_tags_join_table.exs
│ ├── 20180524062103_create_jobs_comments.exs
│ ├── 20180524063128_create_jobs_comments_replies.exs
│ ├── 20180524070826_add_replyid_to_job_comments.exs
│ ├── 20180609033255_rename_tag_part_to_thread.exs
│ ├── 20180609034229_add_unique_index_to_tags.exs
│ ├── 20180609035726_drop_tags_old_unique_index.exs
│ ├── 20180610014507_modify_posts_join_tags.exs
│ ├── 20180610024432_modify_posts_join_tags2.exs
│ ├── 20180621085257_add_raw_to_category.exs
│ ├── 20180630050542_create_publish_throttle.exs
│ ├── 20180630061546_add_timestamp_to_publish_throttle.exs
│ ├── 20180630075133_add_unique_index_to_publish_throttle.exs
│ ├── 20180701020456_add_index_to_threads.exs
│ ├── 20180701092106_create_mentions.exs
│ ├── 20180702095103_create_mention_mails.exs
│ ├── 20180703020018_create_delivery_records.exs
│ ├── 20180703101615_add_read_to_delivery_mentions.exs
│ ├── 20180704083236_create_delivery_notifications.exs
│ ├── 20180704084815_create_account_notification_mails.exs
│ ├── 20180704095905_add_notification_record.exs
│ ├── 20180705031115_create_bills_for_accounts.exs
│ ├── 20180705032455_create_purchase_for_account.exs
│ ├── 20180705034105_create_customizations_for_account.exs
│ ├── 20180705054701_create_users_join_bills.exs
│ ├── 20180705055436_add_pay_infos_to_users.exs
│ ├── 20180705090111_add_option_to_user_custom.exs
│ ├── 20180706025137_create_sys_notifications.exs
│ ├── 20180706030516_add_sys_record_to_delivery_records.exs
│ ├── 20180706032235_create_account_sys_notification_mail.exs
│ ├── 20180706054326_add_user_to_accunt_sys_notification.exs
│ ├── 20180706114458_create_user_activity_logs.exs
│ ├── 20180711075041_add_on_top_to_posts.exs
│ ├── 20180711140519_add_trash_flag_to_post.exs
│ ├── 20180711145040_create_cms_videos.exs
│ ├── 20180711151703_create_communities_videos.exs
│ ├── 20180711152817_create_videos_tags_join_table.exs
│ ├── 20180712072621_create_cms_repos.exs
│ ├── 20180712091240_create_repo_user.exs
│ ├── 20180712094921_alter_repo_attrs.exs
│ ├── 20180712100020_alter_repo_user.exs
│ ├── 20180712100410_renamer_repo_user.exs
│ ├── 20180712100738_repos_builders_join_table.exs
│ ├── 20180712101400_create_communities_repos_join_table.exs
│ ├── 20180712102348_create_repos_tags_join_table.exs
│ ├── 20180713064720_alter_video_repo_desc_to_text.exs
│ ├── 20180717020041_create_users_followers.exs
│ ├── 20180717091927_create_user_following.exs
│ ├── 20180718024913_create_user_achievements.exs
│ ├── 20180822093044_create_favorites_categories.exs
│ ├── 20180822111739_remove_post_id_favorites_categories.exs
│ ├── 20180822112055_add_category_to_posts_favorites.exs
│ ├── 20180824050226_add_privete_to_favorites_category.exs
│ ├── 20180824060333_add_desc_to_favorites_category.exs
│ ├── 20180824235029_replace_category_id_to_posts_favorites.exs
│ ├── 20180825024247_remove_category_title_in_post_favrotes.exs
│ ├── 20180825043644_create_education_backgrounds.exs
│ ├── 20180825060140_add_education_backgrounds_to_users.exs
│ ├── 20180825094837_add_work_backgrounds_to_users.exs
│ ├── 20180825231845_remove_education_company_in_users.exs
│ ├── 20180826082635_add_more_social_info_to_users.exs
│ ├── 20180830034134_add_more_social_to_users.exs
│ ├── 20180911034258_add_pin_state_to_post.exs
│ ├── 20180911092436_create_flags_fix.exs
│ ├── 20180911092437_create_posts_communities_flags.exs
│ ├── 20180912094948_remove_flags.exs
│ ├── 20180912152235_remove_pin_from_posts.exs
│ ├── 20180913014941_remove_trash_from_posts.exs
│ ├── 20180913035118_create_jobs_communities_flags.exs
│ ├── 20180913050800_create_repos_communities_flags.exs
│ ├── 20180913052723_create_videos_communities_flags.exs
│ ├── 20180921132944_add_thumbnil_to__videos.exs
│ ├── 20180925231814_create_geo_info.exs
│ ├── 20180926065313_add_geo_info_to_community.exs
│ ├── 20180926070915_add_geo_city_to_users.exs
│ ├── 20180928135647_alter_repos.exs
│ ├── 20180928141144_rename_repos_fiels.exs
│ ├── 20180929044158_add_star_language_info_to_repos.exs
│ ├── 20180930005859_replace_string_to_text_in_post_comments.exs
│ ├── 20180930010331_replace_string_to_text_in_job_comments.exs
│ ├── 20180930011202_create_video_comments.exs
│ ├── 20180930012820_create_video_comments_reply.exs
│ ├── 20180930014611_add_floor_to_video_comment.exs
│ ├── 20180930021237_add_reply_to_video_comment.exs
│ ├── 20180930021707_drop_videos_comments_replies.exs
│ ├── 20180930021722_recreate_videos_comments_replies.exs
│ ├── 20180930023126_create_likes_to_video_comment.exs
│ ├── 20180930023322_create_dislikes_to_video_comment.exs
│ ├── 20180930030608_create_repo_comment.exs
│ ├── 20180930031135_create_repo_comment_reply.exs
│ ├── 20180930041418_create_repo_comment_likes.exs
│ ├── 20180930041550_create_repo_comment_dislikes.exs
│ ├── 20180930054149_create_community_wiki.exs
│ ├── 20180930131449_add_views_to_community_wiki.exs
│ ├── 20180930151113_create__community_cheatsheets.exs
│ ├── 20181007124749_create_videos_favorites.exs
│ ├── 20181007125858_create_videos_stars.exs
│ ├── 20181008062314_add_likes_to_job_comments.exs
│ ├── 20181008062922_add_dislikes_to_job_comments.exs
│ ├── 20181011131417_add_category_id_to_jobs.exs
│ ├── 20181011133216_add_category_id_to_videos.exs
│ ├── 20181011133312_add_category_index_to_posts_favoritess.exs
│ ├── 20181011152513_add_contribute_to_user_achievement.exs
│ ├── 20181012014834_add_last_updated_to_favorite_categories.exs
│ ├── 20181020014210_add_repo_favorites.exs
│ ├── 20181022060833_rename_repo_last_fetch.exs
│ ├── 20181023004300_add_views_to_user.exs
│ ├── 20181023112702_add_copyright_to_posts.exs
│ ├── 20181023142819_create_posts_viewers.exs
│ ├── 20181023153633_create_jobs_viewers.exs
│ ├── 20181023154929_create_videos_viewers.exs
│ ├── 20181023160033_create_repos_viewers.exs
│ ├── 20181024075229_add_company_link_to_jobs.exs
│ ├── 20181025060156_alter_job_fields.exs
│ ├── 20181025064950_add_fields_for_jobs.exs
│ ├── 20181025130936_cleaup_for_jobs.exs
│ ├── 20181025131259_copy_right_default_for_jobs.exs
│ ├── 20181028010610_create_topic_for_contents.exs
│ ├── 20181028015325_create_topic_post_join.exs
│ ├── 20181028050903_add_topic_to_tags.exs
│ ├── 20181102103138_add_flag_index_to_cms_contents.exs
│ ├── 20181102103942_create_pined_posts.exs
│ ├── 20181102152301_create_pined_jobs.exs
│ ├── 20181102164008_create_pined_videos.exs
│ ├── 20181102165813_create_pined_repos.exs
│ ├── 20181102174534_remove_pin_in_community_flags.exs
│ ├── 20181103023157_add_more_customization.exs
│ ├── 20181103031609_alter_customization_theme.exs
│ ├── 20181114065157_add_remote_ip_for_user.exs
│ ├── 20181116145709_add_index_to_categories.exs
│ ├── 20181122122402_tmp_drop_videos_comments_floor_index.exs
│ ├── 20181203051334_add_default_index_to_community.exs
│ ├── 20181203055656_add_communities_index_to_c11n.exs
│ ├── 20181206072233_create_bill_records.exs
│ ├── 20181206085502_add_note_bill_records.exs
│ ├── 20181208035936_add_member_to_achievements.exs
│ ├── 20181212020415_add_login_to_user.exs
│ ├── 20181212024133_add_index_to_user_login.exs
│ ├── 20190106064921_add_aka_to_community.exs
│ ├── 20190107055357_add_floor_to_mentions.exs
│ ├── 20190107065846_add_floor_to_mention_mails.exs
│ ├── 20190116145140_alter_c11n_theme.exs
│ ├── 20190118035531_add_link_icon_to_posts.exs
│ ├── 20190121044712_add_hover_to_c11n.exs
│ ├── 20190123134729_add_community_in_mentions.exs
│ ├── 20190123135704_add_community_in_mention_mails.exs
│ ├── 20190210053420_add_orignal_community_to_post.exs
│ ├── 20190210065806_add_orignal_community_to_job.exs
│ ├── 20190210070234_add_orignal_community_to_repo.exs
│ ├── 20190210070555_add_orignal_community_to_video.exs
│ ├── 20190303102430_add_user_socials.exs
│ ├── 20190322233442_remove_social_fields_in_user.exs
│ ├── 20190322234236_remove_qq_in_user.exs
│ ├── 20190710090445_create_background_jobs.exs
│ ├── 20210324064013_add_meta_to_posts.exs
│ ├── 20210407015331_rm_cms_videos.exs
│ ├── 20210407043645_creaet_article_comments.exs
│ ├── 20210408020142_create_upvotes_for_article_comments.exs
│ ├── 20210409043049_create_article_comment_participator.exs
│ ├── 20210412023051_create_article_comment_replies.exs
│ ├── 20210412032707_add_reply_to_id_to_article_comment.exs
│ ├── 20210412070456_add_embeds_replies_to_artcile_comments.exs
│ ├── 20210413040429_add_replies_count_to_artcile_comments.exs
│ ├── 20210413062841_add_emotions_artcile_comments.exs
│ ├── 20210413234215_create_comments_users_emotions.exs
│ ├── 20210415010056_add_fold_to_article_comments.exs
│ ├── 20210415022102_add_reported_to_article_comments.exs
│ ├── 20210415025445_add_floor_to_article_comments.exs
│ ├── 20210415042324_add_delete_flag_to_article_comments.exs
│ ├── 20210415053021_add_article_author_id_to_article_comments.exs
│ ├── 20210415060232_add_upvote_count_to_article_comments.exs
│ ├── 20210415062503_rm_old_job_comments.exs
│ ├── 20210415063508_rm_old_repo_comments.exs
│ ├── 20210415084353_rm_old_post_comments_dislike.exs
│ ├── 20210415085842_add_meta_to_article_comment.exs
│ ├── 20210415091518_add_general_reports.exs
│ ├── 20210418041849_add_meta_to_article_content.exs
│ ├── 20210419020056_add_pin_to_article_comments.exs
│ ├── 20210422010836_add_article_comment_count.exs
│ ├── 20210422033146_rename_comment_participators.exs
│ ├── 20210422034830_add_article_comment_count_to_job.exs
│ ├── 20210422045815_add_article_comments_participators_count.exs
│ ├── 20210426082529_remove_topic_tables.exs
│ ├── 20210429014800_create_pined_article.exs
│ ├── 20210429065645_adjust_pin_field_on_articles.exs
│ ├── 20210429083236_remove_old_pined_tables.exs
│ ├── 20210430021726_create_common_article_upvote.exs
│ ├── 20210430041030_add_upvotes_count_to_articles.exs
│ ├── 20210430070102_create_collect_for_article.exs
│ ├── 20210430095524_add_collects_count_to_articles.exs
│ ├── 20210501070920_add_thread_to_article_upvote.exs
│ ├── 20210501143223_create_collect_folder.exs
│ ├── 20210502100107_rename_achievement_fields.exs
│ ├── 20210502132427_add_meta_to_collect_folder.exs
│ ├── 20210503080631_add_collect_folder_to_article_collect_record.exs
│ ├── 20210504042708_remove_old_favorites_staff.exs
│ ├── 20210507051338_remove_viewer_tables.exs
│ ├── 20210507063145_add_popcorn_emotion_to_comment.exs
│ ├── 20210508072209_add_article_comments_participators_to_job.exs
│ ├── 20210510005623_add_emotions_to_post.exs
│ ├── 20210510020858_create_article_user_emotion.exs
│ ├── 20210510060205_add_emotions_to_cms_jobs.exs
│ ├── 20210510090556_add_emotions_to_repo.exs
│ ├── 20210511052156_move_is_reported_to_article.exs
│ ├── 20210511134719_add_repo_to_report.exs
│ ├── 20210512041939_add_repo_to_article_comment.exs
│ ├── 20210512072528_add_report_meta_to_user.exs
│ ├── 20210512110812_rename_is_close_to_is_confirm_in_reports.exs
│ ├── 20210514092312_rename_origial_community.exs
│ ├── 20210515011230_rename_community_flag_conecpt.exs
│ ├── 20210515014737_add_mark_delete_for_articles.exs
│ ├── 20210516033634_add_repo_in_pinned_artilce_comments.exs
│ ├── 20210516052616_add_comment_support_for_repo.exs
│ ├── 20210516055842_rename_articles_pined_comments.exs
│ ├── 20210516144011_add_repo_support_in_emotion.exs
│ ├── 20210517131838_create_article_tags.exs
│ ├── 20210517134611_create_articles_join_tags.exs
│ ├── 20210519055419_add_group_to_article_tag.exs
│ ├── 20210519094205_rename_communiites_article_join_table.exs
│ ├── 20210519142252_add_meta_to_community.exs
│ ├── 20210520084350_add_views_to_community.exs
│ ├── 20210520090847_add_xxx_count_to_community.exs
│ ├── 20210523230813_add_article_tags_count.exs
│ ├── 20210525031630_add_contributes_digest_field_to_community.exs
│ ├── 20210525044015_add_contributes_to_user.exs
│ ├── 20210529032442_move_follow_count_to_users.exs
│ ├── 20210529093621_add_subscribe_count_to_users.exs
│ ├── 20210530060122_add_thread_to_article_comment.exs
│ ├── 20210531024825_remove_domain_fields_on_jobs.exs
│ ├── 20210531072723_add_active_at_to_articles.exs
│ ├── 20210602090617_add_qustion_mark_to_post.exs
│ ├── 20210602111315_add_qustion_mark_to_article_comment.exs
│ ├── 20210602135346_add_solution_digest_to_post.exs
│ ├── 20210602144450_add_solution_digest_to_comment.exs
│ ├── 20210603085958_remove_link_icon_in_posts.exs
│ ├── 20210607020645_create_blogs.exs
│ ├── 20210607021558_create_communities_join_blog.exs
│ ├── 20210607022840_add_blog_to_article_tags.exs
│ ├── 20210607023900_add_blog_reactions.exs
│ ├── 20210607042800_missing_timestamp_to_blogs.exs
│ ├── 20210607065610_missing_body_to_blog.exs
│ ├── 20210607071205_add_body_to_repo.exs
│ ├── 20210609043242_add_body_html_to_artilces.exs
│ ├── 20210609050608_adjust_body_to_artilce_comments.exs
│ ├── 20210613092643_rename_participators.exs
│ ├── 20210613143500_rename_article_comment_to_comment.exs
│ ├── 20210613151714_re_create_comment_replies.exs
│ ├── 20210613151943_re_create_comemnt_user_emotions.exs
│ ├── 20210613153539_re_create_pinned_comments.exs
│ ├── 20210613154831_re_create_cited_contents.exs
│ ├── 20210613155102_remove_article_comment_in_reports.exs
│ ├── 20210613160342_add_comment_id_to_reports.exs
│ ├── 20210614000006_missong_popcorn_emotion.exs
│ ├── 20210614003035_remove_article_prefix_in_artilces.exs
│ ├── 20210614010611_create_comment_upvotes_if_not_exsit.exs
│ ├── 20210614145939_missing_timestamp_for_cite_contents.exs
│ ├── 20210616112945_back_old_mention_and_notifications.exs
│ ├── 20210617014552_create_new_mention.exs
│ ├── 20210618160827_rename_cited_contents_to_cited_artiments.exs
│ ├── 20210619021543_create_new_notifications.exs
│ ├── 20210620091612_rename_notifications_type_to_thread.exs
│ ├── 20210620131328_rename_mentions_type_to_thread.exs
│ ├── 20210621041646_add_mailbox_to_user.exs
│ ├── 20210621100858_remove_old_delivery_tables.exs
│ ├── 20210621101125_remove_old_delivery_records.exs
│ ├── 20210622042857_remove_old_account_mails.exs
│ ├── 20210623054015_add_from_users_count_to_notification.exs
│ ├── 20210623093412_creaet_article_documents.exs
│ ├── 20210623094741_creaet_domain_article_documents.exs
│ ├── 20210623123527_remove_body_html_in_articles.exs
│ ├── 20210625095226_create_works_table.exs
│ ├── 20210625100126_create_works_document.exs
│ ├── 20210625100519_create_communities_join_works.exs
│ ├── 20210625101018_add_works_to_tags_join_table.exs
│ ├── 20210625101144_add_works_to_other_join_tables.exs
│ ├── 20210625134335_add_works_to_cited_artiments.exs
│ ├── 20210626021053_create_radar.exs
│ ├── 20210626021921_create_radar_document.exs
│ ├── 20210626022215_create_communities_join_radars.exs
│ ├── 20210626022430_add_radar_id_to_others.exs
│ ├── 20210626054252_create_guide.exs
│ ├── 20210626054616_create_guide_document.exs
│ ├── 20210626054717_create_communities_join_guides.exs
│ ├── 20210626054903_add_guide_id_to_others.exs
│ ├── 20210626081546_create_meetup.exs
│ ├── 20210626081857_create_meetup_document.exs
│ ├── 20210626082045_create_communities_join_meetups.exs
│ ├── 20210626082257_add_meetup_to_others.exs
│ ├── 20210626100316_create_drink.exs
│ ├── 20210626101523_create_communities_join_drinks.exs
│ ├── 20210626101620_add_drink_to_others.exs
│ ├── 20210626124149_add_drink_community_join_table.exs
│ ├── 20210814103656_add_archive_fields_to_articles.exs
│ ├── 20210815040915_add_archive_fields_to_comments.exs
│ ├── 20210816040543_add_extra_to_tags.exs
│ ├── 20210819055512_add_icon_to_tags.exs
│ ├── 20210826042959_add_raw_to_tags.exs
│ ├── 20210829061837_add_link_to_radar.exs
│ ├── 20210901075602_add_link_to_meetup.exs
│ ├── 20210901075922_add_link_to_drink.exs
│ ├── 20210901080438_add_link_to_guides.exs
│ ├── 20210901080751_add_link_to_works.exs
│ ├── 20210907084024_add_link_to_repos.exs
│ ├── 20210924023609_create_blog_rss.exs
│ ├── 20210926015205_add_feed_fields_to_blog.exs
│ ├── 20210930071135_add_more_fields_to_works.exs
│ ├── 20210930083012_create_works_techstack.exs
│ ├── 20211001022903_create_works_join_techstack.exs
│ ├── 20211001111732_add_cities.exs
│ ├── 20211001112647_create_works_join_cityies.exs
│ ├── 20211001115257_remove_city_info_in_works.exs
│ ├── 20211007062947_add_missing_uniq_index_for_aritlce_upvotes.exs
│ ├── 20211023062941_add_rss_to_blog.exs
│ ├── 20211027134153_add_raw_to_techstack.exs
│ ├── 20211029133301_add_desc_to_works.exs
│ ├── 20211101033116_add_raw_to_city.exs
│ ├── 20211105054243_add_shortbio_to_user.exs
│ ├── 20211105055009_add_more_platform_to_users_social.exs
│ ├── 20211109034133_add_cover_to_works.exs
│ ├── 20211109080329_works_join_teammates.exs
│ ├── 20211109144210_add_pending_to_articles.exs
│ ├── 20211110153325_add_pending_to_comments.exs
│ ├── 20211111093518_add_pending_to_repo.exs
│ ├── 20211114024657_adjust_community_uniq_field.exs
│ └── 20211114085157_add_pending_to_community.exs
├── test
├── groupher_server
│ ├── accounts
│ │ ├── accounts_test.exs
│ │ ├── achievement_test.exs
│ │ ├── collect_folder_test.exs
│ │ ├── customization_test.exs
│ │ ├── fans_test.exs
│ │ ├── hooks
│ │ │ └── notify_test.exs
│ │ ├── mailbx_test.exs
│ │ ├── published
│ │ │ ├── published_blogs_test.exs
│ │ │ ├── published_drink_test.exs
│ │ │ ├── published_guide_test.exs
│ │ │ ├── published_jobs_test.exs
│ │ │ ├── published_meetup_test.exs
│ │ │ ├── published_posts_test.exs
│ │ │ ├── published_radar_test.exs
│ │ │ ├── published_repos_test.exs
│ │ │ └── published_work_test.exs
│ │ ├── reacted_articles_test.exs
│ │ └── utils_test.exs
│ ├── billing
│ │ └── billing_test.exs
│ ├── cms
│ │ ├── abuse_reports
│ │ │ ├── account_report_test.exs
│ │ │ ├── blog_report_test.exs
│ │ │ ├── comment_report_test.exs
│ │ │ ├── drink_report_test.exs
│ │ │ ├── guide_report_test.exs
│ │ │ ├── job_report_test.exs
│ │ │ ├── meetup_report_test.exs
│ │ │ ├── post_report_test.exs
│ │ │ ├── radar_report_test.exs
│ │ │ ├── repo_report_test.exs
│ │ │ └── works_report_test.exs
│ │ ├── article_collect_test.exs
│ │ ├── article_community
│ │ │ ├── blog_test.exs
│ │ │ ├── drink_test.exs
│ │ │ ├── guide_test.exs
│ │ │ ├── job_test.exs
│ │ │ ├── meetup_test.exs
│ │ │ ├── post_test.exs
│ │ │ ├── radar_test.exs
│ │ │ ├── repo_test.exs
│ │ │ └── works_test.exs
│ │ ├── article_tags
│ │ │ ├── blog_tag_test.exs
│ │ │ ├── drink_tag_test.exs
│ │ │ ├── guide_tag_test.exs
│ │ │ ├── job_tag_test.exs
│ │ │ ├── meetup_tag_test.exs
│ │ │ ├── post_tag_test.exs
│ │ │ ├── radar_tag_test.exs
│ │ │ ├── repo_tag_test.exs
│ │ │ └── works_tag_test.exs
│ │ ├── articles
│ │ │ ├── blog_archive_test.exs
│ │ │ ├── blog_pin_test.exs
│ │ │ ├── blog_test.exs
│ │ │ ├── drink_pin_test.exs
│ │ │ ├── drink_test.exs
│ │ │ ├── guide_pin_test.exs
│ │ │ ├── guide_test.exs
│ │ │ ├── job_archive_test.exs
│ │ │ ├── job_pin_test.exs
│ │ │ ├── job_test.exs
│ │ │ ├── meetup_archive_test.exs
│ │ │ ├── meetup_pin_test.exs
│ │ │ ├── meetup_test.exs
│ │ │ ├── pending_flag_test.exs
│ │ │ ├── post_archive_test.exs
│ │ │ ├── post_meta_test.exs
│ │ │ ├── post_pin_test.exs
│ │ │ ├── post_test.exs
│ │ │ ├── radar_archive_test.exs
│ │ │ ├── radar_pin_test.exs
│ │ │ ├── radar_test.exs
│ │ │ ├── repo_pin_test.exs
│ │ │ ├── repo_test.exs
│ │ │ ├── works_archive_test.exs
│ │ │ ├── works_pin_test.exs
│ │ │ └── works_test.exs
│ │ ├── cheatsheet_test.exs
│ │ ├── cms_passport_test.exs
│ │ ├── cms_test.exs
│ │ ├── comments
│ │ │ ├── archive_test.exs
│ │ │ ├── blog_comment_emotions_test.exs
│ │ │ ├── blog_comment_replies_test.exs
│ │ │ ├── blog_comment_test.exs
│ │ │ ├── blog_pending_test.exs
│ │ │ ├── drink_comment_emotions_test.exs
│ │ │ ├── drink_comment_replies_test.exs
│ │ │ ├── drink_comment_test.exs
│ │ │ ├── drink_pending_test.exs
│ │ │ ├── guide_comment_emotions_test.exs
│ │ │ ├── guide_comment_replies_test.exs
│ │ │ ├── guide_comment_test.exs
│ │ │ ├── guide_pending_test.exs
│ │ │ ├── job_comment_emotions_test.exs
│ │ │ ├── job_comment_replies_test.exs
│ │ │ ├── job_comment_test.exs
│ │ │ ├── job_pending_test.exs
│ │ │ ├── meetup_comment_emotions_test.exs
│ │ │ ├── meetup_comment_replies_test.exs
│ │ │ ├── meetup_comment_test.exs
│ │ │ ├── meetup_pending_test.exs
│ │ │ ├── pending_test.exs
│ │ │ ├── post_comment_emotions_test.exs
│ │ │ ├── post_comment_replies_test.exs
│ │ │ ├── post_comment_test.exs
│ │ │ ├── post_pending_test.exs
│ │ │ ├── radar_comment_emotions_test.exs
│ │ │ ├── radar_comment_replies_test.exs
│ │ │ ├── radar_comment_test.exs
│ │ │ ├── radar_pending_test.exs
│ │ │ ├── repo_comment_emotions_test.exs
│ │ │ ├── repo_comment_replies_test.exs
│ │ │ ├── repo_comment_test.exs
│ │ │ ├── works_comment_emotions_test.exs
│ │ │ ├── works_comment_replies_test.exs
│ │ │ ├── works_comment_test.exs
│ │ │ └── works_pending_test.exs
│ │ ├── community
│ │ │ ├── community_meta_test.exs
│ │ │ └── community_test.exs
│ │ ├── emotions
│ │ │ ├── blog_emotions_test.exs
│ │ │ ├── drink_emotions_test.exs
│ │ │ ├── guide_emotions_test.exs
│ │ │ ├── job_emotions_test.exs
│ │ │ ├── meetup_emotions_test.exs
│ │ │ ├── post_emotions_test.exs
│ │ │ ├── radar_emotions_test.exs
│ │ │ ├── repo_emotions_test.exs
│ │ │ └── works_emotions_test.exs
│ │ ├── hooks
│ │ │ ├── audit_post_comment_test.exs
│ │ │ ├── audit_post_test.exs
│ │ │ ├── cite_blog_test.exs
│ │ │ ├── cite_drink_test.exs
│ │ │ ├── cite_guide_test.exs
│ │ │ ├── cite_job_test.exs
│ │ │ ├── cite_meetup_test.exs
│ │ │ ├── cite_post_test.exs
│ │ │ ├── cite_radar_test.exs
│ │ │ ├── cite_works_test.exs
│ │ │ ├── mention_in_blog_test.exs
│ │ │ ├── mention_in_drink_test.exs
│ │ │ ├── mention_in_guide_test.exs
│ │ │ ├── mention_in_job_test.exs
│ │ │ ├── mention_in_meetup_test.exs
│ │ │ ├── mention_in_post_test.exs
│ │ │ ├── mention_in_radar_test.exs
│ │ │ ├── mention_in_works_test.exs
│ │ │ ├── notify_blog_test.exs
│ │ │ ├── notify_drink_test.exs
│ │ │ ├── notify_guide_test.exs
│ │ │ ├── notify_job_test.exs
│ │ │ ├── notify_meetup_test.exs
│ │ │ ├── notify_post_test.exs
│ │ │ ├── notify_radar_test.exs
│ │ │ └── notify_works_test.exs
│ │ ├── search_test.exs
│ │ ├── upvotes
│ │ │ ├── blog_upvote_test.exs
│ │ │ ├── drink_upvote_test.exs
│ │ │ ├── guide_upvote_test.exs
│ │ │ ├── job_upvote_test.exs
│ │ │ ├── meetup_upvote_test.exs
│ │ │ ├── post_upvote_test.exs
│ │ │ ├── radar_upvote_test.exs
│ │ │ └── works_upvote_test.exs
│ │ └── wiki_test.exs
│ ├── delivery
│ │ ├── mention_test.exs
│ │ └── notification_test.exs
│ ├── logs
│ │ └── logs_test.exs
│ ├── mailer
│ │ └── email_test.exs
│ ├── seeds
│ │ ├── articles_seed_test.exs
│ │ ├── clean_up_test.exs
│ │ └── community_seed_test.exs
│ └── statistics
│ │ ├── geo_test.exs
│ │ ├── publish_throttle_test.exs
│ │ ├── statistics_test.exs
│ │ └── status_test.exs
├── groupher_server_web
│ ├── controller
│ │ └── og_test.exs
│ ├── mutation
│ │ ├── accounts
│ │ │ ├── account_test.exs
│ │ │ ├── collect_folder_test.exs
│ │ │ ├── customization_test.exs
│ │ │ ├── fans_test.exs
│ │ │ └── mailbox_test.exs
│ │ ├── billing
│ │ │ └── billing_test.exs
│ │ ├── cms
│ │ │ ├── abuse_reports
│ │ │ │ ├── blog_report_test.exs
│ │ │ │ ├── drink_report_test.exs
│ │ │ │ ├── guide_report_test.exs
│ │ │ │ ├── job_report_test.exs
│ │ │ │ ├── meetup_report_test.exs
│ │ │ │ ├── post_report_test.exs
│ │ │ │ ├── radar_report_test.exs
│ │ │ │ ├── repo_report_test.exs
│ │ │ │ └── works_report_test.exs
│ │ │ ├── article_community
│ │ │ │ ├── blog_test.exs
│ │ │ │ ├── drink_test.exs
│ │ │ │ ├── guide_test.exs
│ │ │ │ ├── job_test.exs
│ │ │ │ ├── meetup_test.exs
│ │ │ │ ├── post_test.exs
│ │ │ │ ├── radar_test.exs
│ │ │ │ ├── repo_test.exs
│ │ │ │ └── works_test.exs
│ │ │ ├── article_tags
│ │ │ │ ├── blog_tag_test.exs
│ │ │ │ ├── curd_test.exs
│ │ │ │ ├── drink_tag_test.exs
│ │ │ │ ├── guide_tag_test.exs
│ │ │ │ ├── job_tag_test.exs
│ │ │ │ ├── meetup_tag_test.exs
│ │ │ │ ├── post_tag_test.exs
│ │ │ │ ├── radar_tag_test.exs
│ │ │ │ ├── repo_tag_test.exs
│ │ │ │ └── works_tag_test.exs
│ │ │ ├── articles
│ │ │ │ ├── blog_emotion_test.exs
│ │ │ │ ├── blog_test.exs
│ │ │ │ ├── drink_emotion_test.exs
│ │ │ │ ├── drink_test.exs
│ │ │ │ ├── guide_emotion_test.exs
│ │ │ │ ├── guide_test.exs
│ │ │ │ ├── job_emotion_test.exs
│ │ │ │ ├── job_test.exs
│ │ │ │ ├── meetup_emotion_test.exs
│ │ │ │ ├── meetup_test.exs
│ │ │ │ ├── post_emotion_test.exs
│ │ │ │ ├── post_test.exs
│ │ │ │ ├── radar_emotion_test.exs
│ │ │ │ ├── radar_test.exs
│ │ │ │ ├── repo_test.exs
│ │ │ │ ├── works_emotion_test.exs
│ │ │ │ └── works_test.exs
│ │ │ ├── cheatsheet_test.exs
│ │ │ ├── cms_manager_test.exs
│ │ │ ├── cms_test.exs
│ │ │ ├── comments
│ │ │ │ ├── blog_comment_test.exs
│ │ │ │ ├── drink_comment_test.exs
│ │ │ │ ├── guide_comment_test.exs
│ │ │ │ ├── job_comment_test.exs
│ │ │ │ ├── meetup_comment_test.exs
│ │ │ │ ├── post_comment_test.exs
│ │ │ │ ├── radar_comment_test.exs
│ │ │ │ ├── repo_comment_test.exs
│ │ │ │ └── works_comment_test.exs
│ │ │ ├── flags
│ │ │ │ ├── blog_flag_test.exs
│ │ │ │ ├── drink_flag_test.exs
│ │ │ │ ├── guide_flag_test.exs
│ │ │ │ ├── job_flag_test.exs
│ │ │ │ ├── meetup_flag_test.exs
│ │ │ │ ├── post_flag_test.exs
│ │ │ │ ├── radar_flag_test.exs
│ │ │ │ ├── repo_flag_test.exs
│ │ │ │ └── works_flag_test.exs
│ │ │ ├── publish_throttle_test.exs
│ │ │ ├── sink
│ │ │ │ ├── blog_sink_test.exs
│ │ │ │ ├── drink_sink_test.exs
│ │ │ │ ├── guide_sink_test.exs
│ │ │ │ ├── job_sink_test.exs
│ │ │ │ ├── meetup_sink_test.exs
│ │ │ │ ├── post_sink_test.exs
│ │ │ │ ├── radar_sink_test.exs
│ │ │ │ ├── repo_sink_test.exs
│ │ │ │ └── works_sink_test.exs
│ │ │ ├── upvotes
│ │ │ │ ├── blog_upvote_test.exs
│ │ │ │ ├── drink_upvote_test.exs
│ │ │ │ ├── guide_upvote_test.exs
│ │ │ │ ├── job_upvote_test.exs
│ │ │ │ ├── meetup_upvote_test.exs
│ │ │ │ ├── post_upvote_test.exs
│ │ │ │ ├── radar_upvote_test.exs
│ │ │ │ └── works_upvote_test.exs
│ │ │ └── wiki_test.exs
│ │ └── statistics
│ │ │ └── statistics_test.exs
│ └── query
│ │ ├── accounts
│ │ ├── account_test.exs
│ │ ├── achievement_test.exs
│ │ ├── colleced_articles_test.exs
│ │ ├── customization_test.exs
│ │ ├── fans_test.exs
│ │ ├── mailbox_test.exs
│ │ ├── published
│ │ │ ├── published_blogs_test.exs
│ │ │ ├── published_drinks_test.exs
│ │ │ ├── published_guides_test.exs
│ │ │ ├── published_jobs_test.exs
│ │ │ ├── published_meetups_test.exs
│ │ │ ├── published_posts_test.exs
│ │ │ ├── published_radars_test.exs
│ │ │ ├── published_repos_test.exs
│ │ │ └── published_works_test.exs
│ │ ├── search_test.exs
│ │ └── upvoteed_articles_test.exs
│ │ ├── billing
│ │ └── billing_test.exs
│ │ ├── cms
│ │ ├── abuse_reports
│ │ │ ├── account_report_test.exs
│ │ │ ├── job_report_test.exs
│ │ │ ├── post_report_test.exs
│ │ │ └── repo_report_test.exs
│ │ ├── article_tags_test.exs
│ │ ├── articles
│ │ │ ├── job_test.exs
│ │ │ ├── post_test.exs
│ │ │ ├── repo_test.exs
│ │ │ └── works_test.exs
│ │ ├── blog_rss_test.exs
│ │ ├── cheatsheet_test.exs
│ │ ├── cms_geo_test.exs
│ │ ├── cms_test.exs
│ │ ├── collects
│ │ │ ├── job_collect_test.exs
│ │ │ └── post_collect_test.exs
│ │ ├── comments
│ │ │ ├── blog_comment_test.exs
│ │ │ ├── drink_comment_test.exs
│ │ │ ├── guide_comment_test.exs
│ │ │ ├── job_comment_test.exs
│ │ │ ├── meetup_comment_test.exs
│ │ │ ├── post_comment_test.exs
│ │ │ ├── radar_comment_test.exs
│ │ │ ├── repo_comment_test.exs
│ │ │ └── works_comment_test.exs
│ │ ├── community_meta_test.exs
│ │ ├── flags
│ │ │ ├── jobs_flags_test.exs
│ │ │ ├── posts_flags_test.exs
│ │ │ └── repos_flags_test.exs
│ │ ├── hooks
│ │ │ ├── cite_blog_test.exs
│ │ │ ├── cite_job_test.exs
│ │ │ └── cite_post_test.exs
│ │ ├── paged_articles
│ │ │ ├── paged_blogs_test.exs
│ │ │ ├── paged_drinks_test.exs
│ │ │ ├── paged_guides_test.exs
│ │ │ ├── paged_jobs_test.exs
│ │ │ ├── paged_meetups_test.exs
│ │ │ ├── paged_posts_test.exs
│ │ │ ├── paged_radars_test.exs
│ │ │ ├── paged_repos_test.exs
│ │ │ └── paged_works_test.exs
│ │ ├── search_test.exs
│ │ ├── upvotes
│ │ │ └── post_upvote_test.exs
│ │ └── wiki_test.exs
│ │ └── statistics
│ │ └── statistics_test.exs
├── helper
│ ├── audit_bot_test.exs
│ ├── cache_test.exs
│ ├── converter
│ │ ├── article_test.exs
│ │ ├── editor_to_html_test
│ │ │ ├── header_test.exs
│ │ │ ├── image_test.exs
│ │ │ ├── index_test.exs
│ │ │ ├── list_test.exs
│ │ │ ├── paragraph_test.exs
│ │ │ ├── people_test.exs
│ │ │ ├── quote_test.exs
│ │ │ └── table_test.exs
│ │ ├── html_sanitizer_test.exs
│ │ ├── md_to_editor_test.exs
│ │ └── mention_parser_test.exs
│ ├── orm_test.exs
│ ├── rss_test.exs
│ ├── utils_test.exs
│ └── validator
│ │ └── schema_test.exs
├── support
│ ├── assert_helper.ex
│ ├── channel_case.ex
│ ├── conn_case.ex
│ ├── conn_simulator.ex
│ ├── data_case.ex
│ ├── factory.ex
│ ├── geo_data.ex
│ └── test_tools.ex
└── test_helper.exs
└── yarn.lock
/.credo.exs:
--------------------------------------------------------------------------------
1 | %{
2 | configs: [
3 | %{
4 | name: "default",
5 | color: true,
6 | struct: true,
7 | files: %{
8 | included: ["lib/", "test/"],
9 | excluded: []
10 | },
11 | checks: [
12 | # alias nested modules in resolvers not work
13 | {Credo.Check.Design.AliasUsage, false},
14 | # For others you can also set parameters
15 | {Credo.Check.Readability.MaxLineLength, priority: :low, max_length: 100},
16 | # ... several checks omitted for readability ...
17 | ]
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/.dialyzer_ignore.exs:
--------------------------------------------------------------------------------
1 | # .dialyzer_ignore.exs
2 | # about no_return see: https://github.com/jeremyjh/dialyxir/issues/210
3 | [
4 | # {short_description}
5 | {":0:unknown_type Unknown type: Result.Object.t/0."},
6 | # {file, warning_type}
7 | {"lib/groupher_server/cms/utils/loader.ex", :no_return},
8 | # {file, warning_type}
9 | {"lib/groupher_server_web/schema.ex", :no_return},
10 | # {file, warning_type}
11 | {"lib/groupher_server_web/schema.ex", :no_return}
12 | ]
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # App artifacts
2 | /_build
3 | /db
4 | /deps
5 | /*.ez
6 |
7 | # Generated on crash by the VM
8 | erl_crash.dump
9 |
10 | # Files matching config/*.secret.exs pattern contain sensitive
11 | # data and you should not commit them into version control.
12 | #
13 | # Alternatively, you may comment the line below and commit the
14 | # secrets files as long as you replace their contents by environment
15 | # variables.
16 | /config/*.secret.exs
17 | _tuts/
18 | .agignore
19 | docs/draft.ex
20 | cover/excoveralls.html
21 | node_modules/
22 | .elixir_ls/
23 |
--------------------------------------------------------------------------------
/.iex.exs:
--------------------------------------------------------------------------------
1 | # see: https://github.com/blackode/elixir-tips#loading-project-module-aliases-iexexs
2 | alias Helper.Converter.EditorToHTML
3 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 |
4 | ## [0.1.1](https://github.com/coderplanets/coderplanets_server/compare/v1.2.1...v0.1.1) (2018-08-04)
5 |
--------------------------------------------------------------------------------
/deploy/dev/api_server.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/deploy/dev/api_server.tar.gz
--------------------------------------------------------------------------------
/deploy/dev/index.html:
--------------------------------------------------------------------------------
1 | fake groupher site
2 |
--------------------------------------------------------------------------------
/deploy/dev/loader.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd /root/api_server/
4 | MIX_ENV=dev mix phx.server &
5 |
6 | while true
7 | do
8 | sleep 100
9 | done
10 |
--------------------------------------------------------------------------------
/deploy/production/api_server.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/deploy/production/api_server.tar.gz
--------------------------------------------------------------------------------
/deploy/production/index.html:
--------------------------------------------------------------------------------
1 | i am coderplnets-production
2 |
--------------------------------------------------------------------------------
/deploy/production/loader.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd /root/api_server/
4 |
5 | MIX_ENV=prod mix phx.server &
6 |
7 | while true
8 | do
9 | sleep 100
10 | done
11 |
--------------------------------------------------------------------------------
/docs/FAQ.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/FAQ.md
--------------------------------------------------------------------------------
/docs/analysis/apollo-engine.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/analysis/error-tracking.md:
--------------------------------------------------------------------------------
1 |
2 | [错误报告](https://sentry.io/welcome/)
3 | [sentry-elixir](https://github.com/getsentry/sentry-elixir)
4 |
--------------------------------------------------------------------------------
/docs/analysis/error-tracking.zh-CN.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/analysis/error-tracking.zh-CN.md
--------------------------------------------------------------------------------
/docs/architecture/graphql.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/architecture/graphql.md
--------------------------------------------------------------------------------
/docs/architecture/graphql.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/ci/commit-msg-lint.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/ci/commit-msg-lint.md
--------------------------------------------------------------------------------
/docs/ci/commit-msg-lint.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/ci/doc-coverage.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/ci/doc-coverage.md
--------------------------------------------------------------------------------
/docs/ci/intro.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | 本项目使用 [Travis CI](https://travis-ci.org/) 作为 CI 服务,
3 | 当前的 [build 状态](https://travis-ci.org/coderplanets/coderplanets_server) 在
4 | README 中由 [](https://travis-ci.org/coderplanets/coderplanets_server)
6 | 表示, 并随着每一次 `commit push` 或 `PR` 代码合并触发并更新。
7 |
8 | CI 不仅仅是运行测试,它还会触发以下任务:
9 |
10 | - [x] 确保所有的测试运行并通过
11 | - [x] 确保测试覆盖率更新
12 | - [x] 发布 GraphQL-Schema 到 apollo-engine
13 | - [x] 确保 GraphQL-Schema 可用
14 | - [x] 确保 commit messages 符合规定
15 | - [x] 如果 build 失败发送邮件给相关开发者
16 |
--------------------------------------------------------------------------------
/docs/ci/schema-check.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/ci/schema-check.md
--------------------------------------------------------------------------------
/docs/ci/schema-check.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/ci/test-coverage.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/ci/test-coverage.md
--------------------------------------------------------------------------------
/docs/ci/test-coverage.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/contributing.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/deployment/intro.md:
--------------------------------------------------------------------------------
1 |
2 | ## Deployment
3 |
4 | coderplanets deploys on aliyun, the basic deploy architechture as follows:
5 |
6 | 
7 |
8 |
--------------------------------------------------------------------------------
/docs/deployment/intro.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/deployment/release.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | #### 中文文档出于时间关系尚未完善,欢迎 PR
3 |
--------------------------------------------------------------------------------
/docs/development/console.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/development/console.md
--------------------------------------------------------------------------------
/docs/development/linter.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/development/linter.md
--------------------------------------------------------------------------------
/docs/development/linter.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | ### 关于提交 git commit
3 |
4 |
5 |
6 | todo
7 |
--------------------------------------------------------------------------------
/docs/development/setup.md:
--------------------------------------------------------------------------------
1 |
2 | ### setup
3 |
4 | use `make setup.help` or `make setup` for help。 make sure you know what you are
5 | doing, then run `make setup.run`。
6 |
7 | ```text
8 |
9 | [valid setup commands]
10 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 | setup.run : setup the basic env for you, include 3-step
12 | | 1. mix ecto.setup # create/migrate tables in db
13 | | 2. mix deps.get # for insall deps
14 | | 3. npm install # for commit-msg linter
15 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 |
17 | ```
18 |
19 |
20 | > NOTE: this cmd will not install Elixir/Erlang for you。 make sure you have thoese tools before setup
21 |
22 |
--------------------------------------------------------------------------------
/docs/development/setup.zh-CN.md:
--------------------------------------------------------------------------------
1 |
2 | ### 初始化
3 |
4 | 使用 `make setup.help` 或 `make setup` 查看项目初始化命令。 在确保你知道用法后运
5 | 行 `make setup.run`, 该命令将自动帮你创建/迁移数据库表,安装依赖包等等。
6 |
7 | ```text
8 |
9 | [valid setup commands]
10 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 | setup.run : setup the basic env for you, include 3-step
12 | | 1. mix ecto.setup # create/migrate tables in db
13 | | 2. mix deps.get # for insall deps
14 | | 3. npm install # for commit-msg linter
15 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 |
17 | ```
18 |
19 |
20 | > 注意: 该命令不会帮你安装 Elixir/Erlang 环境。 请确保你的机器上有上述开发环境。
21 |
--------------------------------------------------------------------------------
/docs/roadmap.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/roadmap.md
--------------------------------------------------------------------------------
/docs/snapshots/apollo-explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/snapshots/apollo-explorer.png
--------------------------------------------------------------------------------
/docs/snapshots/apollo-metrics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/snapshots/apollo-metrics.png
--------------------------------------------------------------------------------
/docs/snapshots/cps_logo_md.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/snapshots/cps_logo_md.png
--------------------------------------------------------------------------------
/docs/snapshots/deployment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/snapshots/deployment.png
--------------------------------------------------------------------------------
/docs/testing/unit-testing.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/testing/unit-testing.md
--------------------------------------------------------------------------------
/docs/troubleshooting.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coderplanets/coderplanets_server/002023114fff49e1f6b8c9f1883aecc7a4c34749/docs/troubleshooting.md
--------------------------------------------------------------------------------
/lib/groupher_server.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer do
2 | @moduledoc """
3 | GroupherServer keeps the contexts that define your domain
4 | and business logic.
5 |
6 | Contexts are also responsible for managing your data, regardless
7 | if it comes from the database, an external API or others.
8 | """
9 | end
10 |
--------------------------------------------------------------------------------
/lib/groupher_server/accounts/delegates/search.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Accounts.Delegate.Search do
2 | @moduledoc """
3 | search for users
4 | """
5 |
6 | import Helper.Utils, only: [done: 1]
7 | import Ecto.Query, warn: false
8 |
9 | alias GroupherServer.Accounts.Model.User
10 | alias Helper.ORM
11 |
12 | @search_items_count 15
13 |
14 | @doc """
15 | search community by title
16 | """
17 | def search_users(%{name: name} = _args) do
18 | User
19 | |> where([c], ilike(c.nickname, ^"%#{name}%"))
20 | |> ORM.paginator(page: 1, size: @search_items_count)
21 | |> done()
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server/accounts/helper/loader.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Accounts.Helper.Loader do
2 | @moduledoc """
3 | dataloader for accounts
4 | """
5 | import Ecto.Query, warn: false
6 |
7 | alias Helper.QueryBuilder
8 | alias GroupherServer.{CMS, Repo}
9 |
10 | alias CMS.Model.{CommunitySubscriber}
11 |
12 | def data, do: Dataloader.Ecto.new(Repo, query: &query/2)
13 |
14 | def query({"communities_subscribers", CommunitySubscriber}, %{filter: filter}) do
15 | CommunitySubscriber
16 | |> QueryBuilder.filter_pack(filter)
17 | |> join(:inner, [u], c in assoc(u, :community))
18 | |> select([u, c], c)
19 | end
20 |
21 | def query(queryable, _args), do: queryable
22 | end
23 |
--------------------------------------------------------------------------------
/lib/groupher_server/accounts/models/education_background.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Accounts.Model.EducationBackground do
2 | @moduledoc false
3 | alias __MODULE__
4 |
5 | use Ecto.Schema
6 | import Ecto.Changeset
7 |
8 | @required_fields ~w(school)a
9 | @optional_fields ~w(major)a
10 |
11 | @type t :: %EducationBackground{}
12 | embedded_schema do
13 | field(:school, :string)
14 | field(:major, :string)
15 | end
16 |
17 | @doc false
18 | def changeset(%EducationBackground{} = education_background, attrs) do
19 | education_background
20 | |> cast(attrs, @optional_fields ++ @required_fields)
21 | |> validate_required(@required_fields)
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server/accounts/models/embeds/user_contribute_record.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Accounts.Model.Embeds.UserContributeRecord do
2 | @moduledoc """
3 | user contribute
4 | """
5 | use Ecto.Schema
6 | use Accessible
7 | import Ecto.Changeset
8 |
9 | @optional_fields ~w(count date)a
10 |
11 | embedded_schema do
12 | field(:count, :integer)
13 | field(:date, :date)
14 | end
15 |
16 | def changeset(struct, params) do
17 | struct |> cast(params, @optional_fields)
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/lib/groupher_server/accounts/models/source_contribute.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Accounts.Model.SourceContribute do
2 | @moduledoc false
3 | alias __MODULE__
4 |
5 | use Ecto.Schema
6 | import Ecto.Changeset
7 |
8 | @optional_fields ~w(web server mobile we_app h5)a
9 |
10 | @type t :: %SourceContribute{}
11 | embedded_schema do
12 | field(:web, :boolean)
13 | field(:server, :boolean)
14 | field(:mobile, :boolean)
15 | field(:we_app, :boolean)
16 | field(:h5, :boolean)
17 | end
18 |
19 | @doc false
20 | def changeset(%SourceContribute{} = source_contribute, attrs) do
21 | source_contribute
22 | |> cast(attrs, @optional_fields)
23 | end
24 | end
25 |
--------------------------------------------------------------------------------
/lib/groupher_server/accounts/models/work_background.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Accounts.Model.WorkBackground do
2 | @moduledoc false
3 | alias __MODULE__
4 |
5 | use Ecto.Schema
6 | import Ecto.Changeset
7 |
8 | @required_fields ~w(company)a
9 | @optional_fields ~w(title)a
10 |
11 | @type t :: %WorkBackground{}
12 | embedded_schema do
13 | field(:company, :string)
14 | field(:title, :string)
15 | end
16 |
17 | @doc false
18 | def changeset(%WorkBackground{} = work_background, attrs) do
19 | work_background
20 | |> cast(attrs, @optional_fields ++ @required_fields)
21 | |> validate_required(@required_fields)
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server/billing/billing.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Billing do
2 | @moduledoc false
3 |
4 | alias GroupherServer.Billing.Delegate.CURD
5 |
6 | defdelegate create_record(user, attrs), to: CURD
7 | defdelegate paged_records(user, filter), to: CURD
8 | defdelegate update_record_state(record_id, state), to: CURD
9 | end
10 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/embeds/app_store.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.Embeds.AppStore do
2 | @moduledoc """
3 | general community meta
4 | """
5 | use Ecto.Schema
6 | use Accessible
7 |
8 | import Ecto.Changeset
9 |
10 | @required_fields ~w(platform)a
11 | @optional_fields ~w(link)a
12 |
13 | embedded_schema do
14 | field(:platform, :string)
15 | field(:link, :string)
16 | end
17 |
18 | def changeset(struct, attrs) do
19 | struct
20 | |> cast(attrs, @optional_fields ++ @required_fields)
21 | |> validate_required(@required_fields)
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/embeds/blog_author.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.Embeds.BlogAuthor do
2 | @moduledoc """
3 | general community meta
4 | """
5 | use Ecto.Schema
6 | use Accessible
7 |
8 | import Ecto.Changeset
9 |
10 | @required_fields ~w(name)a
11 | @optional_fields ~w(link intro github twitter)a
12 |
13 | embedded_schema do
14 | field(:name, :string)
15 | field(:link, :string)
16 | field(:intro, :string)
17 | field(:github, :string)
18 | field(:twitter, :string)
19 | end
20 |
21 | def changeset(struct, attrs) do
22 | struct
23 | |> cast(attrs, @optional_fields ++ @required_fields)
24 | |> validate_required(@required_fields)
25 | end
26 | end
27 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/embeds/blog_history_feed.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.Embeds.BlogHistoryFeed do
2 | @moduledoc """
3 | general community meta
4 | """
5 | use Ecto.Schema
6 | use Accessible
7 |
8 | import Ecto.Changeset
9 |
10 | @optional_fields ~w(title digest link_addr content published_at)a
11 |
12 | embedded_schema do
13 | field(:title, :string)
14 | field(:digest, :string)
15 | field(:link_addr, :string)
16 | field(:content, :string)
17 | field(:published, :string)
18 | field(:updated, :string)
19 | end
20 |
21 | def changeset(struct, params) do
22 | struct
23 | |> cast(params, @optional_fields)
24 | end
25 | end
26 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/embeds/social_info.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.Embeds.SocialInfo do
2 | @moduledoc """
3 | general community meta
4 | """
5 | use Ecto.Schema
6 | use Accessible
7 |
8 | import Ecto.Changeset
9 |
10 | @required_fields ~w(platform)a
11 | @optional_fields ~w(link)a
12 |
13 | embedded_schema do
14 | field(:platform, :string)
15 | field(:link, :string)
16 | end
17 |
18 | def changeset(struct, attrs) do
19 | struct
20 | |> cast(attrs, @optional_fields ++ @required_fields)
21 | |> validate_required(@required_fields)
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/embeds/user.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.Embeds.User do
2 | @moduledoc """
3 | only used for embeds_many situation
4 | """
5 |
6 | use Ecto.Schema
7 | import Ecto.Changeset
8 |
9 | embedded_schema do
10 | field(:user_id, :integer)
11 | field(:login, :string)
12 | field(:avatar, :string)
13 | field(:nickname, :string)
14 | end
15 |
16 | def changeset(struct, params) do
17 | struct
18 | |> cast(params, [:login, :nickname, :user_id, :avatar])
19 | |> validate_required([:login, :nickname])
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/repo_contributor.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.RepoContributor do
2 | @moduledoc false
3 | alias __MODULE__
4 |
5 | use Ecto.Schema
6 | import Ecto.Changeset
7 |
8 | @required_fields ~w(avatar nickname html_url)a
9 |
10 | @type t :: %RepoContributor{}
11 | embedded_schema do
12 | field(:avatar, :string)
13 | field(:nickname, :string)
14 | field(:html_url, :string)
15 | end
16 |
17 | @doc false
18 | def changeset(%RepoContributor{} = repo_contributor, attrs) do
19 | repo_contributor
20 | |> cast(attrs, @required_fields)
21 | |> validate_required(@required_fields)
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server/cms/models/repo_lang.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.CMS.Model.RepoLang do
2 | @moduledoc false
3 | alias __MODULE__
4 |
5 | use Ecto.Schema
6 | import Ecto.Changeset
7 |
8 | @required_fields ~w(name color)a
9 |
10 | @type t :: %RepoLang{}
11 | embedded_schema do
12 | field(:name, :string)
13 | field(:color, :string)
14 | end
15 |
16 | @doc false
17 | def changeset(%RepoLang{} = repo_lang, attrs) do
18 | repo_lang
19 | |> cast(attrs, @required_fields)
20 | |> validate_required(@required_fields)
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/lib/groupher_server/delivery/delivery.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Delivery do
2 | @moduledoc """
3 | The Delivery context.
4 | """
5 |
6 | alias GroupherServer.Delivery
7 | alias Delivery.Delegate.Postman
8 |
9 | defdelegate send(service, artiment, mentions, from_user), to: Postman
10 | defdelegate send(service, attrs, from_user), to: Postman
11 | defdelegate revoke(service, attrs, from_user), to: Postman
12 | defdelegate fetch(service, user, filter), to: Postman
13 | defdelegate unread_count(service, user), to: Postman
14 |
15 | defdelegate mark_read(service, ids, user), to: Postman
16 | defdelegate mark_read_all(service, user), to: Postman
17 | end
18 |
--------------------------------------------------------------------------------
/lib/groupher_server/logs/logs.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Logs do
2 | @moduledoc """
3 | The Logs context.
4 | """
5 |
6 | # import Ecto.Query, warn: false
7 | # alias GroupherServer.Repo
8 |
9 | # alias GroupherServer.Logs.UserActivity
10 | end
11 |
--------------------------------------------------------------------------------
/lib/groupher_server/mailer/mailer.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Mailer do
2 | @moduledoc """
3 | the email staff for Groupher
4 | """
5 | use Bamboo.Mailer, otp_app: :groupher_server
6 | end
7 |
--------------------------------------------------------------------------------
/lib/groupher_server/repo.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo do
2 | import Helper.Utils, only: [get_config: 2]
3 |
4 | use Ecto.Repo, otp_app: :groupher_server, adapter: Ecto.Adapters.Postgres
5 | use Scrivener, page_size: get_config(:general, :page_size)
6 |
7 | @dialyzer {:nowarn_function, rollback: 1}
8 |
9 | @doc """
10 | Dynamically loads the repository url from the
11 | DATABASE_URL environment variable.
12 | """
13 | def init(_, opts) do
14 | {:ok, Keyword.put(opts, :url, System.get_env("DATABASE_URL"))}
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/lib/groupher_server/statistics/delegates/geo.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Statistics.Delegate.Geo do
2 | @moduledoc """
3 | geo info settings
4 | """
5 | import Ecto.Query, warn: false
6 | import Helper.Utils
7 | import ShortMaps
8 |
9 | alias GroupherServer.Statistics.Model.UserGeoInfo
10 | alias Helper.ORM
11 |
12 | def inc_count(city) do
13 | with {:ok, geo_info} <- UserGeoInfo |> ORM.find_by(~m(city)a) do
14 | geo_info |> ORM.update(%{value: geo_info.value + 1})
15 | end
16 | end
17 |
18 | def list_cities_info do
19 | UserGeoInfo
20 | |> where([g], g.value > 0)
21 | |> ORM.paginator(page: 1, size: 300)
22 | |> done()
23 | end
24 | end
25 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | 中间件是贯穿的,。。。
4 |
5 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/authorize.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # ---
4 | defmodule GroupherServerWeb.Middleware.Authorize do
5 | @moduledoc """
6 | authorize gateway, mainly for login check
7 | """
8 |
9 | @behaviour Absinthe.Middleware
10 |
11 | import Helper.Utils, only: [handle_absinthe_error: 3]
12 | import Helper.ErrorCode
13 |
14 | def call(%{context: %{cur_user: _}} = resolution, _info), do: resolution
15 |
16 | def call(resolution, _) do
17 | resolution
18 | |> handle_absinthe_error("Authorize: need login", ecode(:account_login))
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/count_length.ex:
--------------------------------------------------------------------------------
1 | # Absinthe.Middleware behaviour
2 | # see https://hexdocs.pm/absinthe/Absinthe.Middleware.html#content
3 | # ---
4 | defmodule GroupherServerWeb.Middleware.CountLength do
5 | @behaviour Absinthe.Middleware
6 | # google: must appear in the GROUP BY clause or be used in an aggregate function
7 |
8 | def call(%{errors: errors} = resolution, _) when length(errors) > 0, do: resolution
9 |
10 | def call(%{value: []} = resolution, _) do
11 | %{resolution | value: 0}
12 | end
13 |
14 | def call(%{value: value} = resolution, _) when is_list(value) do
15 | %{resolution | value: length(value)}
16 | end
17 |
18 | def call(resolution, _), do: resolution
19 | end
20 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/covert_to_int.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # see https://hexdocs.pm/absinthe/Absinthe.Middleware.html#content
4 | # ---
5 | defmodule GroupherServerWeb.Middleware.ConvertToInt do
6 | @behaviour Absinthe.Middleware
7 | # google: must appear in the GROUP BY clause or be used in an aggregate function
8 |
9 | def call(%{errors: errors} = resolution, _) when length(errors) > 0, do: resolution
10 |
11 | def call(%{value: [value]} = resolution, _) do
12 | %{resolution | value: value}
13 | end
14 |
15 | def call(%{value: []} = resolution, _) do
16 | %{resolution | value: 0}
17 | end
18 |
19 | def call(resolution, _), do: resolution
20 | end
21 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/debug.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # ---
4 | defmodule GroupherServerWeb.Middleware.Debug do
5 | @moduledoc """
6 | authorize gateway, mainly for login check
7 | """
8 |
9 | @behaviour Absinthe.Middleware
10 |
11 | import Helper.Utils, only: [handle_absinthe_error: 3]
12 | import Helper.ErrorCode
13 |
14 | def call(%{context: %{cur_user: _}} = resolution, _info) do
15 | IO.inspect(resolution.value.original_community.viewer_has_subscribed, label: "## resolution")
16 | resolution
17 | end
18 |
19 | def call(resolution, _) do
20 | resolution
21 | |> handle_absinthe_error("Authorize: need login", ecode(:account_login))
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/general_error.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # see https://hexdocs.pm/absinthe/Absinthe.Middleware.html#content
4 | # ---
5 | defmodule GroupherServerWeb.Middleware.GeneralError do
6 | @behaviour Absinthe.Middleware
7 |
8 | def call(%{errors: [List = errors]} = resolution, _) do
9 | message = [%{message: errors}]
10 |
11 | %{resolution | value: [], errors: message}
12 | end
13 |
14 | def call(resolution, _), do: resolution
15 | end
16 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/github_user.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServerWeb.Middleware.GithubUser do
2 | @moduledoc """
3 | handle github oauth login
4 | """
5 | @behaviour Absinthe.Middleware
6 |
7 | import Helper.Utils, only: [handle_absinthe_error: 2]
8 | alias Helper.OAuth2.Github
9 |
10 | def call(%{arguments: %{code: code}} = resolution, _) do
11 | case Github.user_profile(code) do
12 | {:ok, user} ->
13 | arguments = resolution.arguments |> Map.merge(%{github_user: user})
14 | %{resolution | arguments: arguments}
15 |
16 | {:error, err_msg} ->
17 | resolution
18 | |> handle_absinthe_error(err_msg)
19 | end
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/put_current_user.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # see https://hexdocs.pm/absinthe/Absinthe.Middleware.html#content
4 | # ---
5 | defmodule GroupherServerWeb.Middleware.PutCurrentUser do
6 | @behaviour Absinthe.Middleware
7 |
8 | def call(%{context: %{cur_user: cur_user}} = resolution, _) do
9 | arguments = resolution.arguments |> Map.merge(%{cur_user: cur_user})
10 |
11 | %{resolution | arguments: arguments}
12 | end
13 |
14 | def call(%{errors: errors} = resolution, _) when length(errors) > 0, do: resolution
15 |
16 | def call(resolution, _) do
17 | resolution
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/see_me.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # see https://hexdocs.pm/absinthe/Absinthe.Middleware.html#content
4 | # ---
5 | defmodule GroupherServerWeb.Middleware.SeeMe do
6 | @behaviour Absinthe.Middleware
7 |
8 | def call(resolution, _) do
9 | # IO.inspect("see me")
10 | # IO.inspect resolution.arguments, label: "see me"
11 | resolution
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/middleware/viewer_did_convert.ex:
--------------------------------------------------------------------------------
1 | # ---
2 | # Absinthe.Middleware behaviour
3 | # see https://hexdocs.pm/absinthe/Absinthe.Middleware.html#content
4 | # ---
5 |
6 | defmodule GroupherServerWeb.Middleware.ViewerDidConvert do
7 | @behaviour Absinthe.Middleware
8 |
9 | def call(%{value: nil} = resolution, _) do
10 | %{resolution | value: false}
11 | end
12 |
13 | def call(%{value: []} = resolution, _) do
14 | %{resolution | value: false}
15 | end
16 |
17 | def call(%{value: [_]} = resolution, _) do
18 | %{resolution | value: true}
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/resolvers/billing_resolver.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServerWeb.Resolvers.Billing do
2 | @moduledoc """
3 | accounts resolvers
4 | """
5 |
6 | # import ShortMaps
7 | # import Helper.ErrorCode
8 |
9 | alias GroupherServer.Billing
10 |
11 | def paged_bill_records(_root, %{filter: filter}, %{context: %{cur_user: cur_user}}) do
12 | Billing.paged_records(cur_user, filter)
13 | end
14 |
15 | def create_bill(_root, args, %{context: %{cur_user: cur_user}}) do
16 | Billing.create_record(cur_user, args)
17 | end
18 |
19 | def update_bill_state(_root, %{id: id, state: state}, %{context: %{cur_user: _cur_user}}) do
20 | Billing.update_record_state(id, state)
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/schema/billing/billing_queries.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServerWeb.Schema.Billing.Queries do
2 | @moduledoc """
3 | billing GraphQL queries
4 | """
5 | use Helper.GqlSchemaSuite
6 |
7 | object :billing_queries do
8 | @desc "get all bills"
9 | field :paged_bill_records, non_null(:paged_bills) do
10 | arg(:filter, non_null(:paged_filter))
11 |
12 | middleware(M.Authorize, :login)
13 | middleware(M.PageSizeProof)
14 |
15 | resolve(&R.Billing.paged_bill_records/3)
16 | end
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/lib/groupher_server_web/schema/statistics/statistics_mutations.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServerWeb.Schema.Statistics.Mutations do
2 | @moduledoc """
3 | Statistics mutations
4 | """
5 | use Helper.GqlSchemaSuite
6 |
7 | object :statistics_mutations do
8 | field :make_contrubute, :user_contribute do
9 | arg(:user_id, non_null(:id))
10 |
11 | resolve(&R.Statistics.make_contrubute/3)
12 | end
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/lib/helper/converter/editor_to_html/frontend_test/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | The HTML5 Herald
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/lib/helper/converter/editor_to_md.ex:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/helper/gql_schema_suite.ex:
--------------------------------------------------------------------------------
1 | defmodule Helper.GqlSchemaSuite do
2 | @moduledoc """
3 | helper for reduce boilerplate import/use/alias in absinthe schema
4 | """
5 |
6 | defmacro __using__(_opts) do
7 | quote do
8 | use Absinthe.Schema.Notation
9 |
10 | alias GroupherServerWeb.Resolvers, as: R
11 | alias GroupherServerWeb.Middleware, as: M
12 | end
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/lib/helper/later.ex:
--------------------------------------------------------------------------------
1 | defmodule Helper.Later do
2 | @moduledoc """
3 | background jobs support, currently using https://github.com/samphilipd/rihanna
4 | """
5 |
6 | @doc """
7 | ## Example
8 | iex> Later.run({__MODULE__, :get_contributes_then_cache, [%Community{id: id}]})
9 | {:ok, _}
10 | """
11 | def run({mod, func, args}) do
12 | Rihanna.enqueue({mod, func, args})
13 | # weather enqueue success or not, just return {:ok, :pass}, or Multi.Job will be rollback
14 | {:ok, :pass}
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/lib/helper/validator/guards.ex:
--------------------------------------------------------------------------------
1 | defmodule Helper.Validator.Guards do
2 | @moduledoc """
3 | general guards
4 | """
5 | defguard g_pos_int(value) when is_integer(value) and value >= 0
6 | defguard g_not_nil(value) when not is_nil(value)
7 |
8 | defguard g_none_empty_str(value) when is_binary(value) and byte_size(value) > 0
9 |
10 | defguard g_is_id(value) when is_binary(value) or is_integer(value)
11 | end
12 |
--------------------------------------------------------------------------------
/priv/gettext/zh_CN/LC_MESSAGES/404.po:
--------------------------------------------------------------------------------
1 | msgid "Community(%{name}) not found"
2 | msgstr "社区(%{name})未找到"
3 |
4 | msgid "Community(%{id}) not found"
5 | msgstr "社区(id: %{id})未找到"
6 |
7 | msgid "User(%{name}) not found"
8 | msgstr "用户(%{name})未找到"
9 |
10 | msgid "Post(%{name}) not found"
11 | msgstr "帖子(%{name})未找到"
12 |
13 | msgid "Post(%{id}) not found"
14 | msgstr "帖子(id: %{id})未找到"
--------------------------------------------------------------------------------
/priv/gettext/zh_CN/LC_MESSAGES/fields.po:
--------------------------------------------------------------------------------
1 | msgid "nickname"
2 | msgstr "昵称"
3 |
4 | msgid "email"
5 | msgstr "邮箱"
6 |
7 | msgid "user_id"
8 | msgstr "用户"
--------------------------------------------------------------------------------
/priv/mock/community_patch_seeds.exs:
--------------------------------------------------------------------------------
1 | alias GroupherServer.CMS
2 |
3 | # 1. place add community to GroupherServer.CMS.Delegate.SeedsConfig first
4 | # 2. need manulay set cate in categorify_communities
5 |
6 | # CMS.seed_communities(:pl_patch)
7 | CMS.seed_communities(:framework_patch)
8 |
--------------------------------------------------------------------------------
/priv/mock/debug_seeds.exs:
--------------------------------------------------------------------------------
1 | alias GroupherServer.CMS
2 | # alias Helper.ORM
3 |
4 | # ORM.delete_all(CMS.Model.Thread, :if_exist)
5 |
6 | CMS.clean_up_community(:home)
7 | {:ok, community} = CMS.seed_community(:home)
8 |
9 | # hello = ORM.find(CMS.Model.Community, community.id)
10 | # IO.inspect(hello, label: "hello -> ")
11 |
12 | CMS.seed_articles(community, :post, 5)
13 | CMS.seed_articles(community, :job, 5)
14 | CMS.seed_articles(community, :blog, 5)
15 | CMS.seed_articles(community, :radar, 5)
16 | CMS.seed_articles(community, :meetup, 5)
17 | CMS.seed_articles(community, :works, 10)
18 |
--------------------------------------------------------------------------------
/priv/mock/geo_seeds.exs:
--------------------------------------------------------------------------------
1 | alias Helper.GeoPool
2 |
3 | GeoPool.insert_geo_data()
4 |
--------------------------------------------------------------------------------
/priv/mock/populator/cms_comment.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Mock.CMS.Comment do
2 | # alias GroupherServer.Repo
3 | # alias GroupherServer.CMS
4 |
5 | # CMS.comment_post(post_id, body)
6 |
7 | # def random_attrs do
8 | # %{
9 | # title: Faker.Name.first_name() <> " " <> Faker.Name.last_name(),
10 | # body: Faker.Lorem.paragraph(%Range{first: 1, last: 2})
11 | # }
12 | # end
13 |
14 | def random(count \\ 1) do
15 | for _u <- 1..count do
16 | # CMS.create_comment(:post, :comment, 21, 39, "fake comment")
17 | end
18 | end
19 |
20 | # defp insert_multi do
21 | # Post.changeset(%Post{}, random_attrs())
22 | # |> Repo.insert!()
23 | # end
24 | end
25 |
--------------------------------------------------------------------------------
/priv/mock/populator/cms_post.ex:
--------------------------------------------------------------------------------
1 | # for mock CMS posts
2 |
3 | defmodule GroupherServer.Mock.CMS.Post do
4 | alias GroupherServer.Repo
5 | alias GroupherServer.CMS.Model.Post
6 |
7 | def random_attrs do
8 | %{
9 | title: Faker.Name.first_name() <> " " <> Faker.Name.last_name(),
10 | body: Faker.Lorem.sentence(20)
11 | }
12 | end
13 |
14 | def random(count \\ 1) do
15 | for _u <- 1..count do
16 | insert_multi()
17 | end
18 | end
19 |
20 | # def insert(user) do
21 | # User.changeset(%User{}, user)
22 | # |> Repo.insert!
23 | # end
24 |
25 | defp insert_multi do
26 | Post.changeset(%Post{}, random_attrs())
27 | |> Repo.insert!()
28 | end
29 | end
30 |
--------------------------------------------------------------------------------
/priv/mock/post_comments_seeds.exs:
--------------------------------------------------------------------------------
1 | import GroupherServer.Support.Factory
2 |
3 | alias GroupherServer.{CMS, Accounts}
4 | alias Accounts.Model.User
5 |
6 | {:ok, user} = db_insert(:user)
7 | {:ok, post} = db_insert(:post)
8 |
9 | Enum.reduce(1..15, [], fn _, acc ->
10 | unique_num = System.unique_integer([:positive, :monotonic])
11 |
12 | # {:ok, value} =
13 | # CMS.create_comment(
14 | # :post,
15 | # :comment,
16 | # post.id,
17 | # %User{id: user.id},
18 | # "#{Faker.Lorem.Shakespeare.king_richard_iii()} - #{unique_num}"
19 | # )
20 |
21 | # acc ++ [value]
22 | end)
23 |
--------------------------------------------------------------------------------
/priv/mock/user_contributes_seeds.exs:
--------------------------------------------------------------------------------
1 | # use /test/support/populater
2 |
3 | import GroupherServer.Support.Factory
4 |
5 | default_user = %{
6 | username: "mydearxym",
7 | nickname: "simon",
8 | bio: "i am from seed",
9 | company: "infomedia"
10 | }
11 |
12 | db_insert(:user, default_user)
13 | # db_insert_multi!(:user)
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20171217042549_create_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:users) do
6 | add(:username, :string)
7 |
8 | timestamps()
9 | end
10 |
11 | create(unique_index(:users, [:username]))
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20171217131428_add_users_info.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUsersInfo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:nickname, :string)
7 | add(:bio, :string)
8 | add(:company, :string)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20171223101554_create_cms_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCmsPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_posts) do
6 | add(:title, :string)
7 | add(:desc, :text)
8 | add(:body, :text)
9 |
10 | timestamps()
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20171223110631_create_cms_authors.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCmsAuthors do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_authors) do
6 | add(:role, :string)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:cms_authors, [:user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20171223111152_add_cms_author_id_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCmsAuthorIdToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:author_id, references(:cms_authors, on_delete: :delete_all), null: false)
7 | end
8 |
9 | create(index(:cms_posts, [:author_id]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180115075252_recreate_posts_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RecreatePostsComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_comments) do
6 | add(:body, :string)
7 | add(:author_id, references(:users, on_delete: :delete_all), null: false)
8 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:posts_comments, [:author_id]))
14 | create(index(:posts_comments, [:post_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180116060746_add_views_to_cms_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddViewsToCmsPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:views, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180122062720_create_common_tag.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommonTag do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:tags) do
6 | add(:community, :string)
7 | add(:part, :string)
8 | add(:title, :string)
9 | add(:color, :string)
10 | add(:user_id, references(:users))
11 |
12 | timestamps()
13 | end
14 |
15 | create(unique_index(:tags, [:community, :part, :title]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180122084610_create_posts_tags_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePostsTagsJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_tags) do
6 | add(:tag_id, references(:tags, on_delete: :delete_all), null: false)
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:posts_tags, [:tag_id, :post_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180122235911_create_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities) do
6 | add(:title, :string)
7 | add(:desc, :string)
8 | add(:author, references(:users))
9 | end
10 |
11 | create(unique_index(:communities, [:title]))
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180123000925_create_communities_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_posts) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_posts, [:community_id, :post_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180123002525_add_communities_timestamp.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCommunitiesTimestamp do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | timestamps()
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180123011214_alter_communities_author.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterCommunitiesAuthor do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | remove(:author)
7 | add(:user_id, references(:users), null: false)
8 | end
9 |
10 | create(index(:communities, [:user_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180123031129_alter_tag_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterTagCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:tags, [:community, :part, :title]))
6 |
7 | alter table(:tags) do
8 | remove(:community)
9 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
10 | end
11 |
12 | create(unique_index(:tags, [:community_id, :part, :title]))
13 | create(index(:tags, [:community_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180203053909_add_linkaddr_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkaddrToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180203064057_add_digest_length_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDigestLengthToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:digest, :string)
7 | add(:length, :integer)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180203091520_create_posts_stars.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePostsStars do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_stars) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:posts_stars, [:user_id, :post_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180203091848_create_posts_favorites.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePostsFavorites do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_favorites) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:posts_favorites, [:user_id, :post_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180325091016_update_users_info.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.UpdateUsersInfo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | remove(:company)
7 | remove(:username)
8 | add(:avatar, :string)
9 | add(:sex, :string)
10 | add(:from_github, :boolean, default: false)
11 | add(:from_weixin, :boolean, default: false)
12 | end
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180327150232_add_extra_info_to_github_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddExtraInfoToGithubUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:github_users) do
6 | add(:access_token, :string)
7 | add(:node_id, :string)
8 | end
9 |
10 | create(unique_index(:github_users, [:node_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180403012915_create_user_contributes.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUserContribute do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:user_contributes) do
6 | add(:date, :date)
7 | add(:count, :integer)
8 | add(:user_id, references(:users, on_delete: :delete_all))
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:user_contributes, [:user_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180404040216_create_cms_passports.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCmsPassports do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_passports) do
6 | add(:roles, :map)
7 | add(:user_id, references(:users, on_delete: :nothing))
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:cms_passports, [:user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180404091422_rename_cmspassport_roles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameCmspassportRoles do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_passports), :roles, to: :rules)
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180410075032_create_community_contribute.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunityContribute do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:community_contributes) do
6 | add(:date, :date)
7 | add(:count, :integer)
8 | add(:community_id, references(:communities, on_delete: :delete_all, null: false))
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:community_contributes, [:community_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180411032348_create_communities_subscribers.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesSubscribers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_subscribers) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:communities_subscribers, [:user_id, :community_id]))
13 | create(index(:communities_subscribers, [:community_id]))
14 | create(index(:communities_subscribers, [:user_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180416115537_create_community_thread.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunityThread do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:community_threads) do
6 | add(:title, :string)
7 |
8 | timestamps()
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180416121000_create_communites_threads.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitesThreads do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_threads) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:thread_id, references(:community_threads, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:communities_threads, [:community_id, :thread_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180416122540_add_category_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCategoryToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:category, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180416135419_add_unique_to_thread.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUniqueToThread do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create(unique_index(:community_threads, [:title]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180417073924_add_info_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddInfoToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:raw, :string)
7 | add(:label, :string)
8 | add(:logo, :text)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180417080555_add_raw_to_thread.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRawToThread do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:community_threads) do
6 | add(:raw, :string)
7 | add(:logo, :text)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180417085106_rename_community_threads_to_threads.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameCommunityThreadsToThreads do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table("community_threads"), to: table("threads"))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180417131427_remove_old_community_threads_unique_index.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveOldCommunityThreadsUniqueIndex do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:community_threads, [:title]))
6 | create(unique_index(:threads, [:title]))
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180423061803_add_more_attrs_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMoreAttrsToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:location, :string)
7 | add(:email, :string)
8 | add(:company, :string)
9 | add(:education, :string)
10 | add(:qq, :string)
11 | add(:weichat, :string)
12 | add(:weibo, :string)
13 | end
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180424143036_replace_user_sex_with_default_value.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReplaceUserSexWithDefaultValue do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | remove(:sex)
7 | add(:sex, :string, default: "dude")
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180427115725_add_replyto_to_postcomments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReplytoToPostcomments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_comments) do
6 | # add(:author_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:posts_comments, on_delete: :delete_all))
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180427125929_create_posts_comments_reply.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePostsCommentsReply do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_comments_replies) do
6 | add(:comment_id, references(:posts_comments, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:posts_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:posts_comments_replies, [:comment_id]))
13 | create(index(:posts_comments_replies, [:reply_id]))
14 | # create(unique_index(:posts_comments_replies, [:comment_id, :reply_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180428034143_remove_posts_comments_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemovePostsCommentsReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_comments_replies))
6 |
7 | # drop(index(:posts_comments_replies, [:comment_id]))
8 | # drop(index(:posts_comments_replies, [:reply_id]))
9 | # create(unique_index(:posts_comments_replies, [:comment_id, :reply_id]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180428034521_recreate_posts_comments_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RecreatePostsCommentsReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_comments_replies) do
6 | add(:post_comment_id, references(:posts_comments, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:posts_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:posts_comments_replies, [:post_comment_id]))
13 | create(index(:posts_comments_replies, [:reply_id]))
14 | # create(unique_index(:posts_comments_replies, [:comment_id, :reply_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180428132739_create_likes_to_post_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateLikesToPostComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_comments_likes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:post_comment_id, references(:posts_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:posts_comments_likes, [:user_id, :post_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180429092654_create_dislike_to_post_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateDislikeToPostComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_comments_dislikes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:post_comment_id, references(:posts_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:posts_comments_dislikes, [:user_id, :post_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180505014411_add_floor_to_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFloorToComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_comments) do
6 | add(:floor, :integer, default: 0)
7 | end
8 |
9 | create(index(:posts_comments, [:floor]))
10 | create(unique_index(:posts_comments, [:post_id, :author_id, :floor]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180505032006_drop_unique_index_comments_floor.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.DropUniqueIndexCommentsFloor do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:posts_comments, [:post_id, :author_id, :floor]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180522013006_create_categories.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCategories do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:categories) do
6 | add(:title, :string)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:categories, [:title]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180522014431_create_communites_categories.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitesCategories do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_categories) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:category_id, references(:categories, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:communities_categories, [:community_id, :category_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180522015232_remove_community_category_column.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveCommunityCategoryColumn do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | remove(:category)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180522043027_replace_category_user_by_author.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReplaceCategoryUserByAuthor do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:categories) do
6 | remove(:user_id)
7 | add(:author_id, references(:cms_authors, on_delete: :delete_all), null: false)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180522080514_replace_tag_user_by_author.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReplaceTagUserByAuthor do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:tags) do
6 | remove(:user_id)
7 | add(:author_id, references(:cms_authors, on_delete: :delete_all), null: false)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180523022132_create_communities_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_jobs) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_jobs, [:community_id, :job_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180524030533_create_jobs_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_stars) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:jobs_stars, [:user_id, :job_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180524032915_create_jobs_favorites.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsFavorites do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_favorites) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:jobs_favorites, [:user_id, :job_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180524034625_create_jobs_tags_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsTagsJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_tags) do
6 | add(:tag_id, references(:tags, on_delete: :delete_all), null: false)
7 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:jobs_tags, [:tag_id, :job_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180524062103_create_jobs_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_comments) do
6 | add(:body, :string)
7 | add(:author_id, references(:users, on_delete: :delete_all), null: false)
8 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
9 | add(:floor, :integer, default: 0)
10 |
11 | timestamps()
12 | end
13 |
14 | create(index(:jobs_comments, [:author_id]))
15 | create(index(:jobs_comments, [:job_id]))
16 | create(index(:jobs_comments, [:floor]))
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180524063128_create_jobs_comments_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsCommentsReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_comments_replies) do
6 | add(:job_comment_id, references(:jobs_comments, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:jobs_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:jobs_comments_replies, [:job_comment_id]))
13 | create(index(:jobs_comments_replies, [:reply_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180524070826_add_replyid_to_job_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReplyidToJobComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:jobs_comments) do
6 | add(:reply_id, references(:jobs_comments, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180609033255_rename_tag_part_to_thread.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameTagPartToThread do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:tags), :part, to: :thread)
6 |
7 | # drop(unique_index(:tags, [:community, :part, :title]))
8 | # create(unique_index(:tags, [:community, :thread, :title]))
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180609034229_add_unique_index_to_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUniqueIndexToTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create(unique_index(:tags, [:community_id, :thread, :title]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180609035726_drop_tags_old_unique_index.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.DropTagsOldUniqueIndex do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:tags, [:community_id, :part, :title]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180610014507_modify_posts_join_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ModifyPostsJoinTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_tags))
6 |
7 | create table(:posts_tags) do
8 | add(:tag_id, references(:tags), null: false)
9 | add(:post_id, references(:cms_posts), null: false)
10 | end
11 |
12 | create(unique_index(:posts_tags, [:tag_id, :post_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180610024432_modify_posts_join_tags2.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ModifyPostsJoinTags2 do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_tags))
6 |
7 | create table(:posts_tags) do
8 | add(:tag_id, references(:tags, on_delete: :delete_all), null: false)
9 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
10 | end
11 |
12 | create(unique_index(:posts_tags, [:tag_id, :post_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180621085257_add_raw_to_category.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRawToCategory do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:categories) do
6 | add(:raw, :string)
7 | end
8 |
9 | create(unique_index(:categories, [:raw]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180630050542_create_publish_throttle.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePublishThrottle do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:publish_throttles) do
6 | add(:user_id, references(:users, on_delete: :delete_all, null: false))
7 | add(:publish_hour, :utc_datetime)
8 | add(:publish_date, :date)
9 | add(:hour_count, :integer)
10 | add(:date_count, :integer)
11 |
12 | add(:last_publish_time, :utc_datetime)
13 | end
14 |
15 | create(index(:publish_throttles, [:user_id]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180630061546_add_timestamp_to_publish_throttle.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddTimestampToPublishThrottle do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:publish_throttles) do
6 | timestamps()
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180630075133_add_unique_index_to_publish_throttle.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUniqueIndexToPublishThrottle do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(index(:publish_throttles, [:user_id]))
6 | create(unique_index(:publish_throttles, [:user_id]))
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180701020456_add_index_to_threads.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddIndexToThreads do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:threads) do
6 | add(:index, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180703020018_create_delivery_records.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateDeliveryRecords do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:delivery_records) do
6 | add(:mentions_record, :map)
7 | add(:user_id, references(:users, on_delete: :nothing), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:delivery_records, [:user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180703101615_add_read_to_delivery_mentions.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReadToDeliveryMentions do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:mentions) do
6 | add(:read, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180704095905_add_notification_record.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddNotificationRecord do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:delivery_records) do
6 | add(:notifications_record, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180705031115_create_bills_for_accounts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateBillsForAccounts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:bills) do
6 | add(:from_user_id, references(:users, on_delete: :nothing), null: false)
7 | add(:to_user_id, references(:users, on_delete: :nothing), null: false)
8 |
9 | add(:source_type, :string)
10 | add(:source_id, :string)
11 | add(:source_title, :string)
12 | add(:price, :integer)
13 |
14 | timestamps()
15 | end
16 |
17 | create(index(:bills, [:from_user_id]))
18 | create(index(:bills, [:to_user_id]))
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180705032455_create_purchase_for_account.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePurchaseForAccount do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:purchases) do
6 | add(:user_id, references(:users, on_delete: :nothing), null: false)
7 |
8 | add(:theme, :boolean)
9 | add(:community_chart, :boolean)
10 | add(:brainwash_free, :boolean)
11 |
12 | timestamps()
13 | end
14 |
15 | create(unique_index(:purchases, [:user_id]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180705034105_create_customizations_for_account.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCustomizationsForAccount do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:customizations) do
6 | add(:user_id, references(:users, on_delete: :nothing), null: false)
7 |
8 | add(:theme, :boolean)
9 | add(:community_chart, :boolean)
10 | add(:brainwash_free, :boolean)
11 |
12 | timestamps()
13 | end
14 |
15 | create(unique_index(:customizations, [:user_id]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180705054701_create_users_join_bills.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUsersJoinBills do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:users_bills) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:bill_id, references(:bills, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:users_bills, [:user_id]))
13 | create(index(:users_bills, [:bill_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180705055436_add_pay_infos_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPayInfosToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:sponsor_member, :boolean, default: false)
7 | add(:paid_member, :boolean, default: false)
8 | add(:platinum_member, :boolean, default: false)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180705090111_add_option_to_user_custom.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddOptionToUserCustom do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:customizations) do
6 | add(:sidebar_layout, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180706025137_create_sys_notifications.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateSysNotifications do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:sys_notifications) do
6 | add(:source_id, :string)
7 | add(:source_type, :string)
8 | add(:source_title, :string)
9 | add(:source_preview, :string)
10 |
11 | timestamps()
12 | end
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180706030516_add_sys_record_to_delivery_records.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddSysRecordToDeliveryRecords do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:delivery_records) do
6 | add(:sys_notifications_record, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180706032235_create_account_sys_notification_mail.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateAccountSysNotificationMail do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:sys_notification_mails) do
6 | add(:source_type, :string)
7 | add(:source_id, :string)
8 | add(:source_title, :string)
9 | add(:source_preview, :string)
10 |
11 | add(:read, :boolean, default: false)
12 |
13 | timestamps()
14 | end
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180706054326_add_user_to_accunt_sys_notification.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUserToAccuntSysNotification do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:sys_notification_mails) do
6 | add(:user_id, references(:users, on_delete: :nothing), null: false)
7 | end
8 |
9 | create(index(:sys_notification_mails, [:user_id]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180706114458_create_user_activity_logs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUserActivityLogs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:user_activity_logs) do
6 | add(:source_id, :string)
7 | add(:source_title, :string)
8 | add(:source_type, :string)
9 | add(:user_id, references(:users, on_delete: :nothing), null: false)
10 |
11 | timestamps()
12 | end
13 |
14 | create(index(:user_activity_logs, [:user_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180711075041_add_on_top_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddOnTopToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:pin, :boolean, default: false)
7 | end
8 |
9 | create(index(:cms_posts, [:pin]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180711140519_add_trash_flag_to_post.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddTrashFlagToPost do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:trash, :boolean, default: false)
7 | end
8 |
9 | create(index(:cms_posts, [:trash]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180711151703_create_communities_videos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesVideos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_videos) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_videos, [:community_id, :video_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180711152817_create_videos_tags_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideosTagsJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_tags) do
6 | add(:tag_id, references(:tags, on_delete: :delete_all), null: false)
7 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:videos_tags, [:tag_id, :video_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712091240_create_repo_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateRepoUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_repo_users) do
6 | add(:nickname, :string)
7 | add(:bio, :string)
8 | add(:avatar, :string)
9 | add(:link, :string)
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712094921_alter_repo_attrs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterRepoAttrs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_repos), :title, to: :repo_name)
6 |
7 | alter table(:cms_repos) do
8 | remove(:repo_author)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712100020_alter_repo_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterRepoUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_repo_users) do
6 | timestamps()
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712100410_renamer_repo_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenamerRepoUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table("cms_repo_users"), to: table("cms_repo_builders"))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712100738_repos_builders_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReposBuildersJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_builders) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
7 | add(:builder_id, references(:cms_repo_builders, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(index(:repos_builders, [:repo_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712101400_create_communities_repos_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesReposJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_repos) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_repos, [:community_id, :repo_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180712102348_create_repos_tags_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateReposTagsJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_tags) do
6 | add(:tag_id, references(:tags, on_delete: :delete_all), null: false)
7 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:repos_tags, [:tag_id, :repo_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180713064720_alter_video_repo_desc_to_text.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterVideoRepoDescToText do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_videos) do
6 | remove(:desc)
7 | add(:desc, :text)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180717020041_create_users_followers.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUsersFollowers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:users_followers) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:follower_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:users_followers, [:user_id, :follower_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180717091927_create_user_following.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUserFollowing do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:users_followings) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:following_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:users_followings, [:user_id, :following_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180718024913_create_user_achievements.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUserAchievements do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:user_achievements) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:contents_stared_count, :integer, default: 0)
8 | add(:contents_favorited_count, :integer, default: 0)
9 | add(:contents_watched_count, :integer, default: 0)
10 | add(:followers_count, :integer, default: 0)
11 | add(:reputation, :integer, default: 0)
12 |
13 | timestamps()
14 | end
15 |
16 | create(index(:user_achievements, [:user_id]))
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180822093044_create_favorites_categories.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateFavoritesCategories do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:favorite_categories) do
6 | add(:user_id, references(:users, on_delete: :delete_all, null: false))
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all))
8 | # add(:job_id, references(:cms_posts, on_delete: :delete_all), null: false)
9 |
10 | add(:title, :string)
11 | add(:total_count, :integer, default: 0)
12 | add(:index, :integer)
13 |
14 | timestamps()
15 | end
16 |
17 | create(unique_index(:favorite_categories, [:user_id, :title]))
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180822111739_remove_post_id_favorites_categories.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemovePostIdFavoritesCategories do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:favorite_categories) do
6 | remove(:post_id)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180822112055_add_category_to_posts_favorites.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCategoryToPostsFavorites do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_favorites) do
6 | add(:category_title, :string, default: "all")
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180824050226_add_privete_to_favorites_category.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPriveteToFavoritesCategory do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:favorite_categories) do
6 | add(:private, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180824060333_add_desc_to_favorites_category.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDescToFavoritesCategory do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:favorite_categories) do
6 | add(:desc, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180824235029_replace_category_id_to_posts_favorites.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReplaceCategoryIdToPostsFavorites do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_favorites) do
6 | add(:category_id, references(:favorite_categories, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180825024247_remove_category_title_in_post_favrotes.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveCategoryTitleInPostFavrotes do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_favorites) do
6 | remove(:category_title)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180825043644_create_education_backgrounds.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateEducationBackgrounds do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:education_backgrounds) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:school, :string)
8 | add(:major, :string)
9 | end
10 |
11 | create(unique_index(:education_backgrounds, [:user_id]))
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180825060140_add_education_backgrounds_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddEducationBackgroundsToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:education_backgrounds, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180825094837_add_work_backgrounds_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddWorkBackgroundsToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:work_backgrounds, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180825231845_remove_education_company_in_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveEducationCompanyInUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | remove(:company)
7 | remove(:education)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180826082635_add_more_social_info_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMoreSocialInfoToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:github, :string)
7 | add(:twitter, :string)
8 | add(:facebook, :string)
9 | add(:zhihu, :string)
10 | add(:dribble, :string)
11 | add(:huaban, :string)
12 | add(:douban, :string)
13 | end
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180830034134_add_more_social_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMoreSocialToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:pinterest, :string)
7 | add(:instagram, :string)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180911034258_add_pin_state_to_post.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPinStateToPost do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:pin_states, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180911092436_create_flags_fix.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create_if_not_exists table(:flags) do
6 | timestamps()
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180911092437_create_posts_communities_flags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePostsCommunitiesFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_communities_flags) do
6 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 | add(:pin, :boolean, default: false)
9 | add(:trash, :boolean, default: false)
10 | add(:refined, :boolean, default: false)
11 |
12 | timestamps()
13 | end
14 |
15 | create(unique_index(:posts_communities_flags, [:post_id, :community_id]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180912094948_remove_flags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:flags))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180912152235_remove_pin_from_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemovePinFromPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | remove(:pin_states)
7 | remove(:pin)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180913014941_remove_trash_from_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveTrashFromPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | remove(:trash)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180913035118_create_jobs_communities_flags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsCommunitiesFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_communities_flags) do
6 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 | add(:pin, :boolean, default: false)
9 | add(:trash, :boolean, default: false)
10 |
11 | timestamps()
12 | end
13 |
14 | create(unique_index(:jobs_communities_flags, [:job_id, :community_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180913050800_create_repos_communities_flags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateReposCommunitiesFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_communities_flags) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 | add(:pin, :boolean, default: false)
9 | add(:trash, :boolean, default: false)
10 |
11 | timestamps()
12 | end
13 |
14 | create(unique_index(:repos_communities_flags, [:repo_id, :community_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180913052723_create_videos_communities_flags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideosCommunitiesFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_communities_flags) do
6 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 | add(:pin, :boolean, default: false)
9 | add(:trash, :boolean, default: false)
10 |
11 | timestamps()
12 | end
13 |
14 | create(unique_index(:videos_communities_flags, [:video_id, :community_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180921132944_add_thumbnil_to__videos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddThumbnilToVideos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_videos) do
6 | add(:thumbnil, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180925231814_create_geo_info.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateGeoInfo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:geos) do
6 | add(:city, :string)
7 | add(:long, :float)
8 | add(:lant, :float)
9 | add(:value, :integer, default: 0)
10 |
11 | timestamps()
12 | end
13 |
14 | create(unique_index(:geos, [:city]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180926065313_add_geo_info_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddGeoInfoToCommunity do
2 | use Ecto.Migration
3 | alias Helper.GeoPool
4 |
5 | def change do
6 | alter table(:communities) do
7 | add(:geo_info, :map, default: %{data: GeoPool.all()})
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180926070915_add_geo_city_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddGeoCityToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:geo_city, :string)
7 | end
8 |
9 | create(index(:users, [:geo_city]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180928141144_rename_repos_fiels.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameReposFiels do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_repos), :issuesCount, to: :issues_count)
6 | rename(table(:cms_repos), :prsCount, to: :prs_count)
7 | rename(table(:cms_repos), :forkCount, to: :fork_count)
8 | rename(table(:cms_repos), :watchCount, to: :watch_count)
9 |
10 | rename(table(:cms_repos), :releaseTag, to: :release_tag)
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180929044158_add_star_language_info_to_repos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddStarLanguageInfoToRepos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_repos) do
6 | add(:star_count, :integer)
7 | remove(:primary_language)
8 | add(:primary_language, :map)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930005859_replace_string_to_text_in_post_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReplaceStringToTextInPostComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_comments) do
6 | remove(:body)
7 | add(:body, :text)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930010331_replace_string_to_text_in_job_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReplaceStringToTextInJobComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:jobs_comments) do
6 | remove(:body)
7 | add(:body, :text)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930011202_create_video_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideoComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_comments) do
6 | add(:body, :text)
7 | add(:author_id, references(:users, on_delete: :delete_all), null: false)
8 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:videos_comments, [:author_id]))
14 | create(index(:videos_comments, [:video_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930012820_create_video_comments_reply.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideoCommentsReply do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_comments_replies) do
6 | add(:comment_id, references(:videos_comments, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:videos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:videos_comments_replies, [:comment_id]))
13 | create(index(:videos_comments_replies, [:reply_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930014611_add_floor_to_video_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFloorToVideoComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:videos_comments) do
6 | add(:floor, :integer, default: 0)
7 | end
8 |
9 | create(index(:videos_comments, [:floor]))
10 | create(unique_index(:videos_comments, [:video_id, :author_id, :floor]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930021237_add_reply_to_video_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReplyToVideoComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:videos_comments) do
6 | # add(:author_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:videos_comments, on_delete: :delete_all))
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930021707_drop_videos_comments_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.DropVideosCommentsReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:videos_comments_replies))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930021722_recreate_videos_comments_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RecreateVideosCommentsReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_comments_replies) do
6 | add(:video_comment_id, references(:videos_comments, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:videos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:videos_comments_replies, [:video_comment_id]))
13 | create(index(:videos_comments_replies, [:reply_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930023126_create_likes_to_video_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateLikesToVideoComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_comments_likes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:video_comment_id, references(:videos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:videos_comments_likes, [:user_id, :video_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930023322_create_dislikes_to_video_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateDislikesToVideoComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_comments_dislikes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:video_comment_id, references(:videos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:videos_comments_dislikes, [:user_id, :video_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930031135_create_repo_comment_reply.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateRepoCommentReply do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_comments_replies) do
6 | add(:repo_comment_id, references(:repos_comments, on_delete: :delete_all), null: false)
7 | add(:reply_id, references(:repos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(index(:repos_comments_replies, [:repo_comment_id]))
13 | create(index(:repos_comments_replies, [:reply_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930041418_create_repo_comment_likes.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateRepoCommentLikes do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_comments_likes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:repo_comment_id, references(:repos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:repos_comments_likes, [:user_id, :repo_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930041550_create_repo_comment_dislikes.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateRepoCommentDislikes do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_comments_dislikes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:repo_comment_id, references(:repos_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:repos_comments_dislikes, [:user_id, :repo_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930054149_create_community_wiki.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunityWiki do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:community_wikis) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:readme, :text)
8 | # this should be a embed schema
9 | add(:contributors, :map)
10 | add(:last_sync, :utc_datetime)
11 |
12 | timestamps()
13 | end
14 |
15 | create(index(:community_wikis, [:community_id]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930131449_add_views_to_community_wiki.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddViewsToCommunityWiki do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:community_wikis) do
6 | add(:views, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20180930151113_create__community_cheatsheets.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunityCheatsheets do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:community_cheatsheets) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:readme, :text)
8 | # this should be a embed schema
9 | add(:contributors, :map)
10 | add(:last_sync, :utc_datetime)
11 | add(:views, :integer, default: 0)
12 |
13 | timestamps()
14 | end
15 |
16 | create(index(:community_cheatsheets, [:community_id]))
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181007124749_create_videos_favorites.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideosFavorites do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_favorites) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:videos_favorites, [:user_id, :video_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181007125858_create_videos_stars.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideosStars do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_stars) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:videos_stars, [:user_id, :video_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181008062314_add_likes_to_job_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLikesToJobComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_comments_likes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:job_comment_id, references(:jobs_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:jobs_comments_likes, [:user_id, :job_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181008062922_add_dislikes_to_job_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDislikesToJobComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_comments_dislikes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:job_comment_id, references(:jobs_comments, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:jobs_comments_dislikes, [:user_id, :job_comment_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181011131417_add_category_id_to_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCategoryIdToJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:jobs_favorites) do
6 | add(:category_id, references(:favorite_categories, on_delete: :delete_all))
7 | end
8 |
9 | create(index(:jobs_favorites, [:category_id]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181011133216_add_category_id_to_videos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCategoryIdToVideos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:videos_favorites) do
6 | add(:category_id, references(:favorite_categories, on_delete: :delete_all))
7 | end
8 |
9 | create(index(:videos_favorites, [:category_id]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181011133312_add_category_index_to_posts_favoritess.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCategoryIndexToPostsFavoritess do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create(index(:posts_favorites, [:category_id]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181011152513_add_contribute_to_user_achievement.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddContributeToUserAchievement do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:user_achievements) do
6 | add(
7 | :source_contribute,
8 | :map,
9 | default: %{web: false, server: false, mobile: false, we_app: false, h5: false}
10 | )
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181012014834_add_last_updated_to_favorite_categories.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLastUpdatedToFavoriteCategories do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:favorite_categories) do
6 | add(:last_updated, :utc_datetime)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181020014210_add_repo_favorites.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRepoFavorites do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_favorites) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
8 | add(:category_id, references(:favorite_categories, on_delete: :delete_all))
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:repos_favorites, [:category_id]))
14 | create(unique_index(:repos_favorites, [:user_id, :repo_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181022060833_rename_repo_last_fetch.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameRepoLastFetch do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_repos), :last_fetch_time, to: :last_sync)
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181023004300_add_views_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddViewsToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:views, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181023112702_add_copyright_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCopyrightToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:copy_right, :string, default: "original")
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181023142819_create_posts_viewers.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePostsViewers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_viewers) do
6 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:posts_viewers, [:post_id, :user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181023153633_create_jobs_viewers.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateJobsViewers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:jobs_viewers) do
6 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:jobs_viewers, [:job_id, :user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181023154929_create_videos_viewers.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateVideosViewers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:videos_viewers) do
6 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:videos_viewers, [:video_id, :user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181023160033_create_repos_viewers.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateReposViewers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:repos_viewers) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:repos_viewers, [:repo_id, :user_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181024075229_add_company_link_to_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCompanyLinkToJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:company_link, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181025060156_alter_job_fields.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterJobFields do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | remove(:min_salary)
7 | remove(:max_salary)
8 | remove(:min_experience)
9 | remove(:max_experience)
10 | remove(:min_education)
11 | remove(:link_source)
12 | remove(:bonus)
13 |
14 | add(:salary, :string)
15 | add(:exp, :string)
16 | add(:education, :string)
17 | add(:field, :string)
18 | end
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181025064950_add_fields_for_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFieldsForJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:finance, :string)
7 | add(:scale, :string)
8 | add(:copy_right, :string)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181025130936_cleaup_for_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CleaupForJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | remove(:location)
7 | remove(:copy_right)
8 |
9 | add(:copy_right, :string, default_value: "original")
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181025131259_copy_right_default_for_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CopyRightDefaultForJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | remove(:copy_right)
7 |
8 | add(:copy_right, :string, default: "original")
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181028010610_create_topic_for_contents.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateTopicForContents do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:topics) do
6 | # add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | # add(:user_id, references(:users))
8 | add(:thread, :string)
9 | add(:title, :string, default: "index")
10 | add(:raw, :string, default: "index")
11 |
12 | timestamps()
13 | end
14 |
15 | # create(unique_index(:topics, [:community, :part, :title]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181028015325_create_topic_post_join.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateTopicPostJoin do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:posts_topics) do
6 | add(:topic_id, references(:topics, on_delete: :delete_all), null: false)
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:posts_topics, [:topic_id, :post_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181028050903_add_topic_to_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddTopicToTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:tags, [:community_id, :thread, :title]))
6 |
7 | alter table(:tags) do
8 | add(:topic_id, references(:topics, on_delete: :delete_all))
9 | end
10 |
11 | create(unique_index(:tags, [:community_id, :thread, :topic_id, :title]))
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181102103138_add_flag_index_to_cms_contents.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFlagIndexToCmsContents do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create(index(:posts_communities_flags, [:trash]))
6 | create(index(:jobs_communities_flags, [:trash]))
7 | create(index(:repos_communities_flags, [:trash]))
8 | create(index(:videos_communities_flags, [:trash]))
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181102103942_create_pined_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePinedPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:pined_posts) do
6 | add(:post_id, references(:cms_posts, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 | add(:topic_id, references(:topics, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create(unique_index(:pined_posts, [:post_id, :community_id, :topic_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181102152301_create_pined_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePinedJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:pined_jobs) do
6 | add(:job_id, references(:cms_jobs, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:pined_jobs, [:job_id, :community_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181102164008_create_pined_videos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePinedVideos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:pined_videos) do
6 | add(:video_id, references(:cms_videos, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:pined_videos, [:video_id, :community_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181102165813_create_pined_repos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreatePinedRepos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:pined_repos) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all), null: false)
7 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
8 |
9 | timestamps()
10 | end
11 |
12 | create(unique_index(:pined_repos, [:repo_id, :community_id]))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181102174534_remove_pin_in_community_flags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemovePinInCommunityFlags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:posts_communities_flags) do
6 | remove(:pin)
7 | remove(:refined)
8 | end
9 |
10 | alter table(:jobs_communities_flags) do
11 | remove(:pin)
12 | end
13 |
14 | alter table(:videos_communities_flags) do
15 | remove(:pin)
16 | end
17 |
18 | alter table(:repos_communities_flags) do
19 | remove(:pin)
20 | end
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181103023157_add_more_customization.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMoreCustomization do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:customizations) do
6 | add(:banner_layout, :string)
7 | add(:contents_layout, :string)
8 | add(:content_divider, :boolean)
9 | add(:mark_viewed, :boolean)
10 | add(:display_density, :string)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181103031609_alter_customization_theme.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterCustomizationTheme do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:customizations) do
6 | remove(:theme)
7 | add(:theme, :string)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181114065157_add_remote_ip_for_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRemoteIpForUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:remote_ip, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181116145709_add_index_to_categories.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddIndexToCategories do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:categories) do
6 | add(:index, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181122122402_tmp_drop_videos_comments_floor_index.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.TmpDropVideosCommentsFloorIndex do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:videos_comments, [:video_id, :author_id, :floor]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181203051334_add_default_index_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDefaultIndexToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:index, :integer, default: 100_000)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181203055656_add_communities_index_to_c11n.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCommunitiesIndexToC11n do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:customizations) do
6 | add(:sidebar_communities_index, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181206072233_create_bill_records.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateBillRecords do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:bill_records) do
6 | add(:user_id, references(:users, on_delete: :nothing), null: false)
7 | add(:hash_id, :string)
8 | add(:state, :string)
9 |
10 | add(:amount, :float)
11 | add(:payment_usage, :string)
12 | add(:payment_method, :string)
13 |
14 | timestamps()
15 | end
16 |
17 | create(index(:bill_records, [:user_id]))
18 | create(index(:bill_records, [:hash_id]))
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181206085502_add_note_bill_records.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddNoteBillRecords do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:bill_records) do
6 | add(:note, :text)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181208035936_add_member_to_achievements.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMemberToAchievements do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:user_achievements) do
6 | add(:donate_member, :boolean, default: false)
7 | add(:senior_member, :boolean, default: false)
8 | add(:sponsor_member, :boolean, default: false)
9 | end
10 |
11 | create(index(:user_achievements, [:donate_member]))
12 | create(index(:user_achievements, [:senior_member]))
13 | create(index(:user_achievements, [:sponsor_member]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181212020415_add_login_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLoginToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:login, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20181212024133_add_index_to_user_login.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddIndexToUserLogin do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create(unique_index(:users, [:login]))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190106064921_add_aka_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddAkaToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:aka, :string)
7 | end
8 |
9 | create(unique_index(:communities, [:aka]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190107055357_add_floor_to_mentions.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFloorToMentions do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:mentions) do
6 | add(:floor, :integer)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190107065846_add_floor_to_mention_mails.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFloorToMentionMails do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:mention_mails) do
6 | add(:floor, :integer)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190116145140_alter_c11n_theme.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AlterC11nTheme do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:customizations) do
6 | remove(:theme)
7 | add(:theme, :string)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190118035531_add_link_icon_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkIconToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:link_icon, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190121044712_add_hover_to_c11n.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddHoverToC11n do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:customizations) do
6 | add(:content_hover, :boolean)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190123134729_add_community_in_mentions.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCommunityInMentions do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:mentions) do
6 | add(:community, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190123135704_add_community_in_mention_mails.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCommunityInMentionMails do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:mention_mails) do
6 | add(:community, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190210053420_add_orignal_community_to_post.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddOrignalCommunityToPost do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:origial_community_id, references(:communities, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190210065806_add_orignal_community_to_job.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddOrignalCommunityToJob do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:origial_community_id, references(:communities, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190210070234_add_orignal_community_to_repo.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddOrignalCommunityToRepo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_repos) do
6 | add(:origial_community_id, references(:communities, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190210070555_add_orignal_community_to_video.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddOrignalCommunityToVideo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_videos) do
6 | add(:origial_community_id, references(:communities, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190322233442_remove_social_fields_in_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveSocialFieldsInUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | remove(:github)
7 | remove(:twitter)
8 | remove(:facebook)
9 | remove(:zhihu)
10 | remove(:dribble)
11 | remove(:huaban)
12 | remove(:douban)
13 | remove(:pinterest)
14 | remove(:instagram)
15 | remove(:weichat)
16 | remove(:weibo)
17 | end
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190322234236_remove_qq_in_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveQqInUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | remove(:qq)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20190710090445_create_background_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateBackgroundJobs do
2 | use Rihanna.Migration
3 | end
4 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210324064013_add_meta_to_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMetaToPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:meta, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210407015331_rm_cms_videos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RmCmsVideos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:pined_videos))
6 | drop(table(:videos_viewers))
7 | drop(table(:videos_favorites))
8 | drop(table(:videos_stars))
9 | drop(table(:communities_videos))
10 | drop(table(:videos_tags))
11 |
12 | drop(table(:videos_communities_flags))
13 | drop(table(:videos_comments_replies))
14 | drop(table(:videos_comments_likes))
15 | drop(table(:videos_comments_dislikes))
16 |
17 | drop(table(:videos_comments))
18 |
19 | drop(table(:cms_videos))
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210408020142_create_upvotes_for_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateUpvotesForArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:articles_comments_upvotes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 |
8 | add(:article_comment_id, references(:articles_comments, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create(unique_index(:articles_comments_upvotes, [:user_id, :article_comment_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210409043049_create_article_comment_participator.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateArticleCommentParticipator do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:comment_participators, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210412023051_create_article_comment_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateArticleCommentReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:articles_comments_replies) do
6 | add(:article_comment_id, references(:articles_comments, on_delete: :delete_all), null: false)
7 |
8 | add(:reply_to_id, references(:articles_comments, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:articles_comments_replies, [:article_comment_id]))
14 | create(index(:articles_comments_replies, [:reply_to_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210412032707_add_reply_to_id_to_article_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReplyToIdToArticleComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:reply_to_id, references(:articles_comments, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210412070456_add_embeds_replies_to_artcile_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddEmbedsRepliesToArtcileComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:replies, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210413040429_add_replies_count_to_artcile_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRepliesCountToArtcileComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:replies_count, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210413062841_add_emotions_artcile_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddEmotionsArtcileComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:emotions, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415010056_add_fold_to_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFoldToArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:is_folded, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415022102_add_reported_to_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReportedToArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:is_reported, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415025445_add_floor_to_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFloorToArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:floor, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415042324_add_delete_flag_to_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDeleteFlagToArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:is_deleted, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415053021_add_article_author_id_to_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArticleAuthorIdToArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:is_article_author, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415060232_add_upvote_count_to_article_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUpvoteCountToArticleComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:upvotes_count, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415062503_rm_old_job_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RmOldJobComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:jobs_comments_replies))
6 | drop(table(:jobs_comments_likes))
7 | drop(table(:jobs_comments_dislikes))
8 | drop(table(:jobs_comments))
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415063508_rm_old_repo_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RmOldRepoComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:repos_comments_replies))
6 | drop(table(:repos_comments_likes))
7 | drop(table(:repos_comments_dislikes))
8 | drop(table(:repos_comments))
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415084353_rm_old_post_comments_dislike.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RmOldPostCommentsDislike do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_comments_dislikes))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210415085842_add_meta_to_article_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMetaToArticleComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:meta, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210418041849_add_meta_to_article_content.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMetaToArticleContent do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:meta, :map)
7 | end
8 |
9 | alter table(:cms_repos) do
10 | add(:meta, :map)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210422010836_add_article_comment_count.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArticleCommentCount do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:article_comments_count, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210422033146_rename_comment_participators.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameCommentParticipators do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_posts), :comment_participators, to: :article_comments_participators)
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210422034830_add_article_comment_count_to_job.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArticleCommentCountToJob do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:article_comments_count, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210422045815_add_article_comments_participators_count.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArticleCommentsParticipatorsCount do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:article_comments_participators_count, :integer, default: 0)
7 | end
8 |
9 | alter table(:cms_jobs) do
10 | add(:article_comments_participators_count, :integer, default: 0)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210426082529_remove_topic_tables.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveTopicTables do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:tags) do
6 | remove(:topic_id)
7 | end
8 |
9 | drop(unique_index(:pined_posts, [:post_id, :community_id, :topic_id]))
10 |
11 | alter table(:pined_posts) do
12 | remove(:topic_id)
13 | end
14 |
15 | create(unique_index(:pined_posts, [:post_id, :community_id]))
16 |
17 | drop(table(:posts_topics))
18 | drop(table(:topics))
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210429065645_adjust_pin_field_on_articles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AdjustPinFieldOnArticles do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:is_pinned, :boolean, default: false)
7 | end
8 |
9 | alter table(:cms_jobs) do
10 | add(:is_pinned, :boolean, default: false)
11 | end
12 |
13 | alter table(:cms_repos) do
14 | add(:is_pinned, :boolean, default: false)
15 | end
16 |
17 | rename(table(:articles_comments), :is_pined, to: :is_pinned)
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210430041030_add_upvotes_count_to_articles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddUpvotesCountToArticles do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:upvotes_count, :integer, default: 0)
7 | end
8 |
9 | alter table(:cms_jobs) do
10 | add(:upvotes_count, :integer, default: 0)
11 | end
12 |
13 | alter table(:cms_repos) do
14 | add(:upvotes_count, :integer, default: 0)
15 | end
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210430095524_add_collects_count_to_articles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCollectsCountToArticles do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:collects_count, :integer, default: 0)
7 | end
8 |
9 | alter table(:cms_jobs) do
10 | add(:collects_count, :integer, default: 0)
11 | end
12 |
13 | alter table(:cms_repos) do
14 | add(:collects_count, :integer, default: 0)
15 | end
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210501070920_add_thread_to_article_upvote.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddThreadToArticleUpvote do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:article_upvotes) do
6 | add(:thread, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210501143223_create_collect_folder.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCollectFolder do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:collect_folders) do
6 | add(:user_id, references(:users, on_delete: :delete_all, null: false))
7 |
8 | add(:title, :string)
9 | add(:desc, :string)
10 | add(:total_count, :integer, default: 0)
11 | add(:index, :integer)
12 | add(:private, :boolean, default: false)
13 |
14 | add(:collects, :map)
15 | add(:last_updated, :utc_datetime)
16 |
17 | timestamps()
18 | end
19 |
20 | create(unique_index(:collect_folders, [:user_id, :title]))
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210502100107_rename_achievement_fields.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameAchievementFields do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:user_achievements), :contents_stared_count, to: :articles_upvotes_count)
6 | rename(table(:user_achievements), :contents_favorited_count, to: :articles_collects_count)
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210502132427_add_meta_to_collect_folder.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMetaToCollectFolder do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:collect_folders) do
6 | add(:meta, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210503080631_add_collect_folder_to_article_collect_record.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCollectFolderToArticleCollectRecord do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:article_collects) do
6 | add(:collect_folders, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210504042708_remove_old_favorites_staff.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveOldFavoritesStaff do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_favorites))
6 | drop(table(:jobs_favorites))
7 | drop(table(:repos_favorites))
8 |
9 | drop(table(:posts_stars))
10 | drop(table(:jobs_stars))
11 |
12 | drop(table(:favorite_categories))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210507051338_remove_viewer_tables.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveViewerTables do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_viewers))
6 | drop(table(:jobs_viewers))
7 | drop(table(:repos_viewers))
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210507063145_add_popcorn_emotion_to_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPopcornEmotionToComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments_users_emotions) do
6 | add(:popcorn, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210508072209_add_article_comments_participators_to_job.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArticleCommentsParticipatorsToJob do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:article_comments_participators, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210510005623_add_emotions_to_post.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddEmotionsToPost do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:emotions, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210510060205_add_emotions_to_cms_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddEmotionsToCmsJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_jobs) do
6 | add(:emotions, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210510090556_add_emotions_to_repo.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddEmotionsToRepo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_repos) do
6 | add(:emotions, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210511052156_move_is_reported_to_article.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.MoveIsReportedToArticle do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_posts), do: add(:is_reported, :boolean, default: false))
6 | alter(table(:cms_jobs), do: add(:is_reported, :boolean, default: false))
7 | alter(table(:cms_repos), do: add(:is_reported, :boolean, default: false))
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210511134719_add_repo_to_report.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRepoToReport do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:abuse_reports) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210512041939_add_repo_to_article_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRepoToArticleComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all))
7 | end
8 |
9 | create(index(:articles_comments, [:repo_id]))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210512072528_add_report_meta_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddReportMetaToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:is_reported, :boolean, default: false)
7 | add(:meta, :map)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210512110812_rename_is_close_to_is_confirm_in_reports.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameIsCloseToIsConfirmInReports do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:abuse_reports), do: remove(:is_closed))
6 | alter(table(:cms_posts), do: remove(:is_reported))
7 | alter(table(:cms_jobs), do: remove(:is_reported))
8 | alter(table(:cms_repos), do: remove(:is_reported))
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210514092312_rename_origial_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameOrigialCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_posts), :origial_community_id, to: :original_community_id)
6 | rename(table(:cms_jobs), :origial_community_id, to: :original_community_id)
7 | rename(table(:cms_repos), :origial_community_id, to: :original_community_id)
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210515011230_rename_community_flag_conecpt.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameCommunityFlagConecpt do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:posts_communities_flags))
6 | drop(table(:jobs_communities_flags))
7 | drop(table(:repos_communities_flags))
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210515014737_add_mark_delete_for_articles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMarkDeleteForArticles do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:mark_delete, :boolean, default: false)
7 | end
8 |
9 | alter table(:cms_jobs) do
10 | add(:mark_delete, :boolean, default: false)
11 | end
12 |
13 | alter table(:cms_repos) do
14 | add(:mark_delete, :boolean, default: false)
15 | end
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210516033634_add_repo_in_pinned_artilce_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRepoInPinnedArtilceComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_pined_comments) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all))
7 | end
8 |
9 | create(index(:articles_pined_comments, [:repo_id]))
10 |
11 | create(
12 | unique_index(:articles_pined_comments, [:post_id, :job_id, :repo_id, :article_comment_id])
13 | )
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210516052616_add_comment_support_for_repo.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCommentSupportForRepo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_repos) do
6 | add(:article_comments_participators_count, :integer, default: 0)
7 | add(:article_comments_count, :integer, default: 0)
8 | add(:article_comments_participators, :map)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210516055842_rename_articles_pined_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameArticlesPinedComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table("articles_pined_comments"), to: table("articles_pinned_comments"))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210516144011_add_repo_support_in_emotion.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRepoSupportInEmotion do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_users_emotions) do
6 | add(:repo_id, references(:cms_repos, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210517131838_create_article_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateArticleTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:article_tags) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:thread, :string)
8 | add(:title, :string)
9 | add(:color, :string)
10 | add(:author_id, references(:cms_authors, on_delete: :delete_all), null: false)
11 |
12 | timestamps()
13 | end
14 |
15 | # create(unique_index(:tags, [:community, :part, :title]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210517134611_create_articles_join_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateArticlesJoinTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:articles_join_tags) do
6 | add(:article_tag_id, references(:article_tags, on_delete: :delete_all), null: false)
7 | add(:post_id, references(:cms_posts, on_delete: :delete_all))
8 | add(:job_id, references(:cms_jobs, on_delete: :delete_all))
9 | add(:repo_id, references(:cms_repos, on_delete: :delete_all))
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210519055419_add_group_to_article_tag.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddGroupToArticleTag do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:article_tags) do
6 | add(:group, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210519142252_add_meta_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMetaToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:meta, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210520084350_add_views_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddViewsToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:views, :integer, default: 0)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210520090847_add_xxx_count_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddXxxCountToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:articles_count, :integer, default: 0)
7 | add(:editors_count, :integer, default: 0)
8 | add(:subscribers_count, :integer, default: 0)
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210523230813_add_article_tags_count.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArticleTagsCount do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:article_tags_count, :integer, default: 0)
7 | add(:threads_count, :integer, default: 0)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210525031630_add_contributes_digest_field_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddContributesDigestFieldToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:communities) do
6 | add(:contributes_digest, {:array, :integer}, default: [])
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210525044015_add_contributes_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddContributesToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:contributes, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210529032442_move_follow_count_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.MoveFollowCountToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:followings_count, :integer)
7 | add(:followers_count, :integer)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210529093621_add_subscribe_count_to_users.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddSubscribeCountToUsers do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:subscribed_communities_count, :integer)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210530060122_add_thread_to_article_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddThreadToArticleComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:thread, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210531024825_remove_domain_fields_on_jobs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveDomainFieldsOnJobs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_jobs), do: remove(:salary))
6 | alter(table(:cms_jobs), do: remove(:exp))
7 | alter(table(:cms_jobs), do: remove(:education))
8 | alter(table(:cms_jobs), do: remove(:field))
9 | alter(table(:cms_jobs), do: remove(:finance))
10 | alter(table(:cms_jobs), do: remove(:scale))
11 |
12 | alter(table(:cms_jobs), do: remove(:company_logo))
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210531072723_add_active_at_to_articles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddActiveAtToArticles do
2 | use Ecto.Migration
3 |
4 | # see https://elixirforum.com/t/ecto-datetime-and-utc-naive-datetime-in-migration/21213
5 |
6 | def change do
7 | alter(table(:cms_posts), do: add(:active_at, :utc_datetime))
8 | alter(table(:cms_jobs), do: add(:active_at, :utc_datetime))
9 | alter(table(:cms_repos), do: add(:active_at, :utc_datetime))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210602090617_add_qustion_mark_to_post.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddQustionMarkToPost do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:is_question, :boolean, default: false)
7 | add(:is_solved, :boolean, default: false)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210602111315_add_qustion_mark_to_article_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddQustionMarkToArticleComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:is_for_question, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210602135346_add_solution_digest_to_post.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddSolutionDigestToPost do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | add(:solution_digest, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210602144450_add_solution_digest_to_comment.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddSolutionDigestToComment do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | add(:is_solution, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210603085958_remove_link_icon_in_posts.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveLinkIconInPosts do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_posts) do
6 | remove(:link_icon)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210607021558_create_communities_join_blog.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJoinBlog do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_join_blogs) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:blog_id, references(:cms_blogs, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_join_blogs, [:community_id, :blog_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210607022840_add_blog_to_article_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddBlogToArticleTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_join_tags) do
6 | add(:blog_id, references(:cms_blogs, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210607042800_missing_timestamp_to_blogs.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.MissingTimestampToBlogs do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_blogs) do
6 | timestamps()
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210607065610_missing_body_to_blog.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.MissingBodyToBlog do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_blogs), do: add(:body, :string))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210607071205_add_body_to_repo.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddBodyToRepo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_repos), do: add(:body, :string))
6 | alter(table(:cms_repos), do: add(:digest, :string))
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210609043242_add_body_html_to_artilces.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddBodyHtmlToArtilces do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_posts), do: modify(:body, :text))
6 | alter(table(:cms_jobs), do: modify(:body, :text))
7 | alter(table(:cms_repos), do: modify(:body, :text))
8 | alter(table(:cms_blogs), do: modify(:body, :text))
9 |
10 | alter(table(:cms_posts), do: add(:body_html, :text))
11 | alter(table(:cms_jobs), do: add(:body_html, :text))
12 | alter(table(:cms_repos), do: add(:body_html, :text))
13 | alter(table(:cms_blogs), do: add(:body_html, :text))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210609050608_adjust_body_to_artilce_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AdjustBodyToArtilceComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_comments) do
6 | modify(:body_html, :text)
7 | add(:body, :text)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210613151714_re_create_comment_replies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.ReCreateCommentReplies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:comments_replies) do
6 | add(:comment_id, references(:comments, on_delete: :delete_all), null: false)
7 |
8 | add(:reply_to_id, references(:comments, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create(index(:comments_replies, [:comment_id]))
14 | create(index(:comments_replies, [:reply_to_id]))
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210613155102_remove_article_comment_in_reports.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveArticleCommentInReports do
2 | use Ecto.Migration
3 |
4 | def up do
5 | alter(table(:abuse_reports),
6 | do:
7 | remove_if_exists(
8 | :article_comment_id,
9 | references(:articles_comments, on_delete: :delete_all)
10 | )
11 | )
12 | end
13 |
14 | def down do
15 | alter table(:abuse_reports) do
16 | add(:article_comment_id, references(:comments, on_delete: :delete_all))
17 | end
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210613160342_add_comment_id_to_reports.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCommentIdToReports do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:abuse_reports) do
6 | add(:comment_id, references(:comments, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210614000006_missong_popcorn_emotion.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.MissongPopcornEmotion do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:comments_users_emotions) do
6 | add(:popcorn, :boolean, default: false)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210614010611_create_comment_upvotes_if_not_exsit.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommentUpvotesIfNotExsit do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create_if_not_exists table(:comments_upvotes) do
6 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
7 |
8 | add(:comment_id, references(:comments, on_delete: :delete_all), null: false)
9 |
10 | timestamps()
11 | end
12 |
13 | create_if_not_exists(unique_index(:comments_upvotes, [:user_id, :comment_id]))
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210614145939_missing_timestamp_for_cite_contents.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.MissingTimestampForCiteContents do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cited_contents) do
6 | timestamps()
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210616112945_back_old_mention_and_notifications.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.BackOldMentionAndNotifications do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(index(:mentions, [:from_user_id]))
6 | drop(index(:mentions, [:to_user_id]))
7 |
8 | rename(table("mentions"), to: table("old_mentions"))
9 | rename(table("notifications"), to: table("old_notifications"))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210618160827_rename_cited_contents_to_cited_artiments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameCitedContentsToCitedArtiments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(index(:cited_contents, [:cited_by_type, :cited_by_id]))
6 | rename(table(:cited_contents), to: table(:cited_artiments))
7 | create(index(:cited_artiments, [:cited_by_type, :cited_by_id]))
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210619021543_create_new_notifications.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateNewNotifications do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:notifications) do
6 | add(:user_id, references(:users, on_delete: :nothing), null: false)
7 | # article or comment
8 | add(:type, :string)
9 | add(:article_id, :id)
10 | add(:title, :string)
11 | # optional comment id
12 | add(:comment_id, :id)
13 | #
14 | add(:action, :string)
15 | add(:from_users, :map)
16 |
17 | add(:read, :boolean, default: false)
18 |
19 | timestamps()
20 | end
21 |
22 | create(index(:notifications, [:user_id]))
23 | end
24 | end
25 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210620091612_rename_notifications_type_to_thread.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameNotificationsTypeToThread do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:notifications), :type, to: :thread)
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210620131328_rename_mentions_type_to_thread.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RenameMentionsTypeToThread do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:mentions), :type, to: :thread)
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210621041646_add_mailbox_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMailboxToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:mailbox, :map)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210621100858_remove_old_delivery_tables.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveOldDeliveryTables do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:old_mentions))
6 | drop(table(:old_notifications))
7 | drop(table(:sys_notifications))
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210621101125_remove_old_delivery_records.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveOldDeliveryRecords do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:delivery_records))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210622042857_remove_old_account_mails.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveOldAccountMails do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(table(:mention_mails))
6 | drop(table(:notification_mails))
7 | drop(table(:sys_notification_mails))
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210623054015_add_from_users_count_to_notification.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFromUsersCountToNotification do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:notifications) do
6 | add(:from_users_count, :integer)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210623093412_creaet_article_documents.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreaetArticleDocuments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:article_documents) do
6 | add(:thread, :string)
7 | add(:article_id, :id)
8 | add(:title, :string)
9 | add(:body, :text)
10 | add(:body_html, :text)
11 |
12 | timestamps()
13 | end
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210623123527_remove_body_html_in_articles.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveBodyHtmlInArticles do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_posts), do: remove(:body_html))
6 | alter(table(:cms_jobs), do: remove(:body_html))
7 | alter(table(:cms_blogs), do: remove(:body_html))
8 | alter(table(:cms_repos), do: remove(:body_html))
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210625100126_create_works_document.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateWorksDocument do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:works_documents) do
6 | add(:works_id, references(:cms_works, on_delete: :delete_all), null: false)
7 | add(:body, :text)
8 | add(:body_html, :text)
9 | add(:markdown, :text)
10 | add(:toc, :map)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210625100519_create_communities_join_works.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJoinWorks do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_join_works) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:works_id, references(:cms_works, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_join_works, [:community_id, :works_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210625101018_add_works_to_tags_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddWorksToTagsJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:articles_join_tags) do
6 | add(:works_id, references(:cms_works, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210625134335_add_works_to_cited_artiments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddWorksToCitedArtiments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cited_artiments) do
6 | add(:works_id, references(:cms_works, on_delete: :delete_all))
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626021921_create_radar_document.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateRadarDocument do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:radar_documents) do
6 | add(:radar_id, references(:cms_radars, on_delete: :delete_all), null: false)
7 | add(:body, :text)
8 | add(:body_html, :text)
9 | add(:markdown, :text)
10 | add(:toc, :map)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626022215_create_communities_join_radars.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJoinRadars do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_join_radars) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:radar_id, references(:cms_radars, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_join_radars, [:community_id, :radar_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626054616_create_guide_document.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateGuideDocument do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:guide_documents) do
6 | add(:guide_id, references(:cms_guides, on_delete: :delete_all), null: false)
7 | add(:body, :text)
8 | add(:body_html, :text)
9 | add(:markdown, :text)
10 | add(:toc, :map)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626054717_create_communities_join_guides.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJoinGuides do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_join_guides) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:guide_id, references(:cms_guides, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_join_guides, [:community_id, :guide_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626081857_create_meetup_document.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateMeetupDocument do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:meetup_documents) do
6 | add(:meetup_id, references(:cms_meetups, on_delete: :delete_all), null: false)
7 | add(:body, :text)
8 | add(:body_html, :text)
9 | add(:markdown, :text)
10 | add(:toc, :map)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626082045_create_communities_join_meetups.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJoinMeetups do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_join_meetups) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:meetup_id, references(:cms_meetups, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_join_meetups, [:community_id, :meetup_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626101523_create_communities_join_drinks.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateCommunitiesJoinDrinks do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:drink_documents) do
6 | add(:drink_id, references(:cms_drinks, on_delete: :delete_all), null: false)
7 | add(:body, :text)
8 | add(:body_html, :text)
9 | add(:markdown, :text)
10 | add(:toc, :map)
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210626124149_add_drink_community_join_table.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDrinkCommunityJoinTable do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:communities_join_drinks) do
6 | add(:community_id, references(:communities, on_delete: :delete_all), null: false)
7 | add(:drink_id, references(:cms_drinks, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:communities_join_drinks, [:community_id, :drink_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210815040915_add_archive_fields_to_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddArchiveFieldsToComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:comments) do
6 | add(:is_archived, :boolean, default: false)
7 | add(:archived_at, :utc_datetime)
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210816040543_add_extra_to_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddExtraToTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:article_tags) do
6 | add(:extra, {:array, :string})
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210819055512_add_icon_to_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddIconToTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:article_tags) do
6 | add(:icon, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210826042959_add_raw_to_tags.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRawToTags do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:article_tags) do
6 | add(:raw, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210829061837_add_link_to_radar.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkToRadar do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_radars) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210901075602_add_link_to_meetup.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkToMeetup do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_meetups) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210901075922_add_link_to_drink.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkToDrink do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_drinks) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210901080438_add_link_to_guides.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkToGuides do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_guides) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210901080751_add_link_to_works.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkToWorks do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_works) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210907084024_add_link_to_repos.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddLinkToRepos do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_repos) do
6 | add(:link_addr, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210924023609_create_blog_rss.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateBlogRss do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_blog_rss) do
6 | add(:rss, :string)
7 | add(:link, :string)
8 | add(:title, :string)
9 | add(:subtitle, :string)
10 | add(:updated, :string)
11 | add(:history_feed, :map)
12 | add(:author, :map)
13 | end
14 |
15 | create(unique_index(:cms_blog_rss, [:rss, :link]))
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210926015205_add_feed_fields_to_blog.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddFeedFieldsToBlog do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_blogs) do
6 | add(:feed_digest, :string)
7 | add(:feed_content, :text)
8 | add(:published, :string)
9 | add(:blog_author, :map)
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20210930083012_create_works_techstack.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateWorksTechstack do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_techstacks) do
6 | add(:title, :string)
7 | add(:logo, :string)
8 | add(:desc, :string)
9 | add(:home_link, :string)
10 | add(:community_link, :string)
11 | add(:category, :string)
12 |
13 | timestamps()
14 | end
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211001022903_create_works_join_techstack.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateWorksJoinTechstack do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:works_join_techstacks) do
6 | add(:works_id, references(:cms_works, on_delete: :delete_all), null: false)
7 | add(:techstack_id, references(:cms_techstacks, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:works_join_techstacks, [:works_id, :techstack_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211001111732_add_cities.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCities do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:cms_cities) do
6 | add(:title, :string)
7 | add(:logo, :string)
8 | add(:desc, :string)
9 | add(:link, :string)
10 |
11 | timestamps()
12 | end
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211001112647_create_works_join_cityies.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.CreateWorksJoinCityies do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:works_join_cities) do
6 | add(:works_id, references(:cms_works, on_delete: :delete_all), null: false)
7 | add(:city_id, references(:cms_cities, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:works_join_cities, [:works_id, :city_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211001115257_remove_city_info_in_works.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.RemoveCityInfoInWorks do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_works) do
6 | remove(:city_info)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211007062947_add_missing_uniq_index_for_aritlce_upvotes.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMissingUniqIndexForAritlceUpvotes do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create(unique_index(:article_upvotes, [:user_id, :meetup_id]))
6 | create(unique_index(:article_upvotes, [:user_id, :drink_id]))
7 | create(unique_index(:article_upvotes, [:user_id, :blog_id]))
8 | create(unique_index(:article_upvotes, [:user_id, :works_id]))
9 | create(unique_index(:article_upvotes, [:user_id, :radar_id]))
10 | create(unique_index(:article_upvotes, [:user_id, :guide_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211023062941_add_rss_to_blog.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRssToBlog do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_blogs) do
6 | add(:rss, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211027134153_add_raw_to_techstack.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRawToTechstack do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_techstacks) do
6 | add(:raw, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211029133301_add_desc_to_works.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddDescToWorks do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_works) do
6 | add(:desc, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211101033116_add_raw_to_city.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddRawToCity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | rename(table(:cms_cities), :link, to: :raw)
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211105054243_add_shortbio_to_user.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddShortbioToUser do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:users) do
6 | add(:shortbio, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211105055009_add_more_platform_to_users_social.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddMorePlatformToUsersSocial do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:user_socials) do
6 | add(:company, :string)
7 | add(:blog, :string)
8 | remove(:facebook, :string)
9 |
10 | remove(:instagram, :string)
11 |
12 | remove(:qq, :string)
13 | remove(:weichat, :string)
14 | remove(:weibo, :string)
15 | end
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211109034133_add_cover_to_works.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddCoverToWorks do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter table(:cms_works) do
6 | add(:cover, :string)
7 | end
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211109080329_works_join_teammates.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.WorksJoinTeammates do
2 | use Ecto.Migration
3 |
4 | def change do
5 | create table(:works_join_teammates) do
6 | add(:works_id, references(:cms_works, on_delete: :delete_all), null: false)
7 | add(:user_id, references(:users, on_delete: :delete_all), null: false)
8 | end
9 |
10 | create(unique_index(:works_join_teammates, [:works_id, :user_id]))
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211110153325_add_pending_to_comments.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPendingToComments do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:comments), do: add(:pending, :integer, default: 0))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211111093518_add_pending_to_repo.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPendingToRepo do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:cms_repos), do: add(:pending, :integer, default: 0))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211114024657_adjust_community_uniq_field.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AdjustCommunityUniqField do
2 | use Ecto.Migration
3 |
4 | def change do
5 | drop(unique_index(:communities, [:title]))
6 | create(unique_index(:communities, [:raw]))
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/priv/repo/migrations/20211114085157_add_pending_to_community.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Repo.Migrations.AddPendingToCommunity do
2 | use Ecto.Migration
3 |
4 | def change do
5 | alter(table(:communities), do: add(:pending, :integer, default: 0))
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/test/groupher_server/accounts/utils_test.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Test.Accounts.Utils do
2 | @moduledoc false
3 | use GroupherServer.TestTools
4 |
5 | alias GroupherServer.Accounts
6 | alias Helper.Cache
7 |
8 | @cache_pool :user_login
9 |
10 | describe "[get userid]" do
11 | test "get_userid_and_cache should work" do
12 | {:ok, user} = db_insert(:user)
13 |
14 | {:ok, user_id} = Accounts.get_userid_and_cache(user.login)
15 | assert user.id == user_id
16 |
17 | assert {:ok, user_id} = Cache.get(@cache_pool, user.login)
18 | assert user_id == user.id
19 | end
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/test/groupher_server/logs/logs_test.exs:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.Test.Logs do
2 | use GroupherServer.TestTools
3 |
4 | # alias GroupherServer.Logs
5 |
6 | describe "user_activity_logs" do
7 | # alias GroupherServer.Logs.UserActivity
8 |
9 | test "TODO " do
10 | true
11 | end
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/test/support/test_tools.ex:
--------------------------------------------------------------------------------
1 | defmodule GroupherServer.TestTools do
2 | @moduledoc """
3 | helper for reduce import mudules in test files
4 | """
5 | use ExUnit.CaseTemplate
6 |
7 | using do
8 | quote do
9 | use GroupherServerWeb.ConnCase, async: true
10 |
11 | import GroupherServer.Support.Factory
12 | import GroupherServer.Test.ConnSimulator
13 | import GroupherServer.Test.AssertHelper
14 | import Ecto.Query, warn: false
15 | import Helper.ErrorCode
16 | import Helper.Utils, only: [camelize_map_key: 1, camelize_map_key: 2]
17 |
18 | import ShortMaps
19 | end
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/test/test_helper.exs:
--------------------------------------------------------------------------------
1 | ExUnit.configure(exclude: :later, trace: false, formatters: [ExUnit.CLIFormatter, ExUnitNotifier])
2 | ExUnit.start()
3 |
4 | Ecto.Adapters.SQL.Sandbox.mode(GroupherServer.Repo, :manual)
5 |
--------------------------------------------------------------------------------